xsl: corrispondenza modello per xml con prefissi
-
06-07-2019 - |
Domanda
Ho questo file xml
<?xml version="1.0" encoding="UTF-8"?>
<bo:C837ClaimParent xsi:type="bo:C837ClaimParent"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bo="http://somelongpathHere/process/bo">
<claimAux>
...
</claimAux>
<enterpriseClaim>
...
<patientAccountNumber>data to capture here</patientAccountNumber>
</enterpriseClaim>
Devo abbinare i dati all'interno di < patientAccountNumber > ;, che si trova all'interno di < enterpriseClaim > ;, che si trova all'interno di < bo: C837ClaimParent gt; Ho provato tutti i valori che riesco a pensare su xsl: template match e non riesco a trovare quel nodo, o non lo trova, o corrisponde all'intero file xml, il mio file xsl ha il seguente aspetto:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
....
<div>
<xsl:value-of select="C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>
cosa devo specificare sul mio xsl: template e sul mio xsl: value-of?
inoltre, per questo stesso file corrisponderò ad altri valori, tutto è all'interno del nodo principale < bo: C837ClaimParent, quindi cosa devo usare per poter abbinare in modo efficiente i nodi in tutto il mio file?
Soluzione
Sembra che manchi una dichiarazione dello spazio dei nomi per il tuo prefisso bo
. Questo spazio dei nomi probabilmente dovrà apparire nella tua soluzione a meno che tu non usi local-name()
modifica (dopo la comparsa dello spazio dei nomi!
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bo="http://somelongpathHere/process/bo">
<xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
....
<div>
<xsl:value-of select="bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>
Sei sicuro che enterpriseClaim
si trova in uno spazio dei nomi diverso da C837ClaimParent
?
Altri suggerimenti
<xsl:stylesheet ... xmlns:bo="http://www.bo.org">
...
<xsl:value-of select="/bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" />
...
</xsl:stylesheet>
In generale, il mio consiglio sarebbe di leggere su spazi dei nomi in XML e XPath.