Ignorieren XML-namespace-Präfix, während die Auswahl-Elemente - XSLT

XML Version 1

<inboundData xmlns="urn:college:names:ws:docexchange">
<Root>
        <College Version="5.0" xmlns:cidx="urn:abc:names:specification:col:schema:all:5:0" xmlns="urn:abc:names:specification:col:schema:all:5:0">
           <Header>
              <Address>
                 <AddressLine1>4600 Big Tree Way</AddressLine1>
              </Address>
           </Header>
    </College>
</Root>
</inboundData>

XML-Version 2

<inboundData xmlns="urn:college:names:ws:docexchange">
<Root>
        <ns1:College Version="5.0" xmlns:ns1="urn:abc:names:specification:col:schema:all:5:0">
           <ns1:Header>
              <ns1:Address>
                 <ns1:AddressLine1>4600 Big Tree Way</ns1:AddressLine1>
              </ns1:Address>
           </ns1:Header>
    </ns1:College>
</Root>
</inboundData>

XSL-Code

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:abc:names:specification:col:schema:all:5:0" xmlns:b="urn:college:names:ws:docexchange">
<xsl:template match="/">
    <xsl:copy-of select="b:inboundData/b:College/*"/>
</xsl:template>
</xsl:stylesheet>

Korrektur in der XSL-code. (Realisiert die Fehler nach der Lektüre von Hansens Antwort)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:abc:names:specification:col:schema:all:5:0" xmlns:b="urn:college:names:ws:docexchange">
<xsl:template match="/">
    <xsl:copy-of select="b:inboundData/b:Root/*"/>
</xsl:template>
</xsl:stylesheet>

Den XSL-code funktioniert auch für XML-version 1. Aufgrund der zusätzlichen namespace "ns1", es funktioniert nicht für Typ-2. Wie kann ich das xsl-code funktioniert für beide Versionen? Freundlich mich aufzuklären!

  • Das mag nicht von Bedeutung sein für die Beantwortung der Frage, aber auf den gegebenen Daten, Ihre Vorlage würde nichts tun, weil die inboundData element nicht ein Kind haben College.
InformationsquelleAutor amitz27 | 2012-11-30
Schreibe einen Kommentar