nur root element auslesen
Tom D.
- xsl
0 Thomas J.S.0 Thomas J.S.0 Tom D.
Hallo,
hoffe das mir jemand helfen kann, ich bin auch der suche nach einer Methode, die es mir ermöglicht nur das root element aus einer xml datei auszulesen. Also ich habe eine Reihe von XML Dokumenten. Nun möchte ich von allen XML Dateien nur das Root element auslesen mit alle Attributen und namespace. Z.B.
muster.xml
<ns:root attribute1="some" fo:attribute2="tool" xmlns:ns="nsURI" xmlns:fo="foURI">
<someElements/>
<someElements/>
</ns:root>
in meiner auswertung moechte ich nun von der muster.xml das root Element auslesen mit
doc(muster.xml)/???
in einer neuen xml datei soll dann das Ergebnis so aussehen:
<ns:root attribute1="some" fo:attribute2="tool" xmlns:ns="nsURI" xmlns:fo="foURI"/>
Die dateien haben alle unterschiedlich Namespace, so dass ich diese nicht im Stylesheet alle deklarieren kann. Auch wenn xslt2.0 neue functionen hat, weiss ich nicht so recht, wie ich das auslesen hinbekomme. Es scheitert immer am namespace bzw. weiss ich nicht, wie ich überhaupt den namespace hineinschreiben kann. Wäre super, wenn mir einer einen tipp geben kann - google hat mich nicht wirklich weitergebracht bzw. suche ich wohl nach dem falschen Weg.
Grüße, Tom
Hallo,
hoffe das mir jemand helfen kann, ich bin auch der suche nach einer Methode, die es mir ermöglicht nur das root element aus einer xml datei auszulesen. Also ich habe eine Reihe von XML Dokumenten. Nun möchte ich von allen XML Dateien nur das Root element auslesen mit alle Attributen und namespace. Z.B.
muster.xml
<ns:root attribute1="some" fo:attribute2="tool" xmlns:ns="nsURI" xmlns:fo="foURI">
<someElements/>
<someElements/>
</ns:root>in meiner auswertung moechte ich nun von der muster.xml das root Element auslesen mit
doc(muster.xml)/???
in einer neuen xml datei soll dann das Ergebnis so aussehen:
<ns:root attribute1="some" fo:attribute2="tool" xmlns:ns="nsURI" xmlns:fo="foURI"/>
document(muster.xml)/*[1]
<xsl:copy copy-namespaces="yes">
<xsl:for-each select="@*">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:element>
Die dateien haben alle unterschiedlich Namespace, so dass ich diese nicht im Stylesheet alle deklarieren kann. Auch wenn xslt2.0 neue functionen hat, weiss ich nicht so recht, wie ich das auslesen hinbekomme. Es scheitert immer am namespace bzw. weiss ich nicht, wie ich überhaupt den namespace hineinschreiben kann. Wäre super, wenn mir einer einen tipp geben kann - google hat mich nicht wirklich weitergebracht bzw. suche ich wohl nach dem falschen Weg.
Die manesräume müssen in der XML-Datei irgendwo ja erklärt sein. Und wenn es das Root-Element ist, dann müssen sie bereits darin definiert worden sein. Mit »copy-namespaces="yes"« sollten auch diese kopiert werden. ( copy-namespaces="yes" ist für copy-of die default Einstellung)
Grüße
Thomas
ooops...
document(muster.xml)/*[1]
<xsl:copy copy-namespaces="yes">
<xsl:for-each select="@*">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:copy>
^^^^^^^^^^^^^^^^^^
Grüße
Thomas
Perfekt!
Besten Dank, das mit dem copy-namespace war mir neu, funktioniert einwandfrei.
Gruß, Tom