Hallo zusammen,
folgendes Problem:
Ich möchte mittels eines XSLT Stylesheets ein XML Schema (XSD) in ein weiteres XML-Dokument transformieren. Nun ist es ja möglich, in einem XSD Elemente zu definieren, die über das type-Attribut andere (Root-) Elemente im Schema referenzieren.
Beispiel:
Mein Problem ist nun, dass ich für ein type-Attribut ein Template aufrufen will, welches den referenzierten Typen transformiert. Da aber einmal ein Prefix verwendet wird und einmal nicht (was ja ok ist, da Prefix und targetNamespace identisch sind), schlägt ein Vergleich von type-Attribut und simpleType-Name natürlich fehl.
Also hab ich mir gedacht, ich schalte ein weiteres XSLT davor, welches mir alle prefixlosen name-Attribute mit dem entsprechenden Prefix (so es eines gibt, das auf den targetNamespace passt) ausstattet.
Nun stehe ich aber vor dem Problem, dass sich die xmlns-Attribute im schema-Tag des XSD nicht adressieren lassen:
Dies liefert lediglich targetNamespace, elementFormDefault und attributeFormDefault als Attribute zurück, nicht aber die xmlns.
Ich würde mich sehr freuen, wenn jemand eine Idee oder wenigstens einen Lösungsansatz für das eine oder das andere Problem hätte.
Danke im voraus.
Gruß,
Taurion
folgendes Problem:
Ich möchte mittels eines XSLT Stylesheets ein XML Schema (XSD) in ein weiteres XML-Dokument transformieren. Nun ist es ja möglich, in einem XSD Elemente zu definieren, die über das type-Attribut andere (Root-) Elemente im Schema referenzieren.
Beispiel:
Code:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:TST="http://eineuri" targetNamespace="http://eineuri" elementFormDefault="qualified" attributeFormDefault="qualified"> <element name="First"> <complexType> <sequence> <element name="Second" type="TST:SecondType"/> </sequence> </complexType> </element> <simpleType name="SecondType"> <restriction base="string"> <maxLength value="10"/> </restriction> </simpleType> </schema>
Also hab ich mir gedacht, ich schalte ein weiteres XSLT davor, welches mir alle prefixlosen name-Attribute mit dem entsprechenden Prefix (so es eines gibt, das auf den targetNamespace passt) ausstattet.
Nun stehe ich aber vor dem Problem, dass sich die xmlns-Attribute im schema-Tag des XSD nicht adressieren lassen:
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsl:template match="/xsd:schema"> <xsl:for-each select="@*"> <xsl:value-of select="name()"/> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Ich würde mich sehr freuen, wenn jemand eine Idee oder wenigstens einen Lösungsansatz für das eine oder das andere Problem hätte.
Danke im voraus.
Gruß,
Taurion
Comment