[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] creating attribute for xsl:element in applied template
Hello, Saxon 6.5, XSLT 1.0 assume following very simple schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:attribute name="id" type="xs:ID" /> <xs:element name="parent"> <xs:complexType> <xs:sequence> <xs:element ref="child" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="child" > <xs:complexType> <xs:attribute ref="id" /> </xs:complexType> </xs:element> </xs:schema> What I try to do now is to generate a sample XML file with XSLT. Therefore I first create an xsl:element and then apply-templates on every child-node. When some sub-structure happens to contain a xs:attribute, I'd like to assign that attribute to the created xsl:element. This is not possible, because the creation of xsl:attribute takes place in another template than the creation of the xsl:element. The XSLT I came up with so far: <xsl:template match="xs:element[@ref]" > <xsl:apply-templates select="/xs:schema/xs:element[@name = current()/@ref]" /> </xsl:template> <xsl:template match="/xs:schema/xs:element[@name]" > <xsl:element name="{@name}"> <xsl:apply-templates /> </xsl:element> </xsl:template> <xsl:template match="xs:complexType" > <xsl:apply-templates select="xs:attribute" /> <xsl:apply-templates select="*[not(self::xs:attribute)]" /> </xsl:template> <xsl:template match="xs:attribute[@ref]" > <xsl:apply-templates select="/xs:schema/xs:attribute[@name = current()/@ref]" /> </xsl:template> <xsl:template match="/xs:schema/xs:attribute[@name]" > <xsl:attribute name="{@name}"> <xsl:value-of select="@type" /> </xsl:attribute> </xsl:template> Saxon sais: "Cannot write an attribute node when no element start tag is open" Is there no other way to accomplish this task than to create all attribute-nodes directly in the "xs:element[@name]" - template? Would a switch to XSLT 2.0 change something? Greetings Christoph If you are not the intended addressee, please inform us immediately that you have received this e-mail in error, and delete it. We thank you for your cooperation.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|