Subject: Re: [xsl] Problem applying XSL to XML that uses a schema From: George Cristian Bina <george@xxxxxxx> Date: Thu, 09 Dec 2004 11:21:22 +0200 |
<xsl:template match="comment()"> <xsl:comment><xsl:value-of select="."/></xsl:comment> </xsl:template>
<xsl:template match="t:subelement|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template>
<xsl:template match="t:mainelement|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/>
<xsl:comment >NewSubComment1.1</xsl:comment> <xsl:text>
</xsl:text> <subelement name="newsub">content</subelement> <xsl:comment >NewSubComment1.2</xsl:comment> </xsl:copy> </xsl:template> </xsl:stylesheet>
Best Regards, George --------------------------------------------------------------------- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com
Hello,
I am trying to apply an XSL stylesheet to an XML file that uses a schema. I will discuss first what does work.
The following is the input XML file (XML1): <?xml version="1.0" encoding="UTF-8" ?> <!-- MainComment1 --> <mainelement>
<!-- SubComment1.1 --> <subelement name="sub1">content</subelement> <!-- SubComment1.2 -->
<!-- SubComment2.1 --> <subelement name="sub2">content</subelement> <!-- SubComment2.2 -->
</mainelement> <!-- MainComment2 -->
The following is the xsl I have so far (XSL1): <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.1" indent="yes" />
<xsl:template match="comment()"> <xsl:comment><xsl:value-of select="."/></xsl:comment> </xsl:template>
<xsl:template match="subelement|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template>
<xsl:template match="mainelement|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/>
<xsl:comment >NewSubComment1.1</xsl:comment> <xsl:text>
</xsl:text> <subelement name="newsub">content</subelement> <xsl:comment >NewSubComment1.2</xsl:comment> </xsl:copy> </xsl:template> </xsl:stylesheet>
The following is the output from applying XSL1 to XML1 (OUTPUT1): <?xml version="1.0" encoding="UTF-8"?> <!-- MainComment1 --> <mainelement>
<!-- SubComment1.1 --> <subelement name="sub1">content</subelement> <!-- SubComment1.2 -->
<!-- SubComment2.1 --> <subelement name="sub2">content</subelement> <!-- SubComment2.2 -->
<!--NewSubComment1.1--> <subelement name="newsub">content</subelement> <!--NewSubComment1.2-->
</mainelement> <!-- MainComment2 -->
This is exactly what I want without the schema (OUTPUT1). The problem is when the XML file uses a schema which is my real world problem.
The following is the input XML file that uses the schema (XML2): <?xml version="1.0" encoding="UTF-8" ?> <!-- MainComment1 --> <mainelement xmlns="http://www.mydomain.com/mainelement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mydomain.com/mainelement file:///C:/schemas/mainelement.xsd">
<!-- SubComment1.1 --> <subelement name="sub1">content</subelement> <!-- SubComment1.2 -->
<!-- SubComment2.1 --> <subelement name="sub2">content</subelement> <!-- SubComment2.2 -->
</mainelement> <!-- MainComment2 -->
When I apply XSL1 to XML2 I get the following output (OUTPUT2): <?xml version="1.0" encoding="UTF-8"?> <!-- MainComment1 -->
<!-- SubComment1.1 --> content <!-- SubComment1.2 -->
<!-- SubComment2.1 --> content <!-- SubComment2.2 -->
<!-- MainComment2 -->
OUTPUT2 is clearly not what I want. I want the exact same output as OUTPUT1 except with the schema location and xmlns etc. The following is the desired output (DESIREDOUTPUT): <?xml version="1.0" encoding="UTF-8"?> <!-- MainComment1 --> <mainelement xmlns="http://www.mydomain.com/mainelement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mydomain.com/mainelement file:///C:/schemas/mainelement.xsd">
<!-- SubComment1.1 --> <subelement name="sub1">content</subelement> <!-- SubComment1.2 -->
<!-- SubComment2.1 --> <subelement name="sub2">content</subelement> <!-- SubComment2.2 -->
<!--NewSubComment1.1--> <subelement name="newsub">content</subelement> <!--NewSubComment1.2--> </mainelement> <!-- MainComment2 -->
Can anyone help me understand how to modify my XSL1 to create the DESIREDOUTPUT? Any help would be greatly appreciated. I have been trying to make this work for days!
Thanks,
Tim
---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Problem applying XSL to X, Mukul Gandhi | Thread | Re: [xsl] Problem applying XSL to X, tim |
Re: [xsl] Number of Recursive XSL T, Mukul Gandhi | Date | Re: [xsl] Extracting the grouping f, Kevin Jones |
Month |