Ich benutze XSL und XPATH, um eine komplexe XML-Datei zu durchlaufen, zu lesen und zu transformieren, wobei ich mehrere Knoten mit gleichen Namen aber unterschiedlichen Werten habe. Meine XML-Beispieldatei ist unten -XML-Dokument mit xpath und xsl durchlaufen
<core>
<address>
<postalZipCode>90017</postalZipCode>
<updateSource>xxxxxx</updateSource>
<city>LOS ANGELES</city>
<stateProvince>CA</stateProvince>
<type>MAILING</type>
<line1>818 WEST SEVENTH STREET</line1>
</address>
<address>
<postalZipCode>95014</postalZipCode>
<updateSource>xxxxxx</updateSource>
<city>CUPERTINO</city>
<stateProvince>CA</stateProvince>
<type>PRIMARY</type>
<line1>1234 XYZ STREET</line1>
</address>
<memberId>0</memberId>
</core>
Wenn ich die Postadresse Zeile 1 Wert gelesen, der Wert I immer bin „1234 XYZ STREET“, die im Wesentlichen die primäre Adresse ist. Hier ist mein xsl Datei-Schnipsel: -
<xsl:template match="core">
<xsl:if test="memberId['0'] and address/type['MAILING']">
<fo:table-row>
<fo:table-cell><fo:block /></fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="data">
<fo:block>Line 1</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="data">
<fo:block><xsl:value-of select="address/line1/text()"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
Können die Experten hier bitte vorschlagen, wenn es eine andere Art und Weise möglich ist, XSL zu zwingen, den richtigen Wert zu lesen, wo Adresse ist MAILING, statt den ersten Wert liest er feststellt, ???
"* der Wert, den ich bekomme, ist" 1234 XYZ STREET "*" Nein, das ist ** nicht ** Wert, den Sie mit dem Code erhalten, den Sie hier gepostet haben. –