输入XML
<note>
<from>Example</from>
<heading>Reminder</heading>
<body>XSLT conversion</body>
</note>
预期输出XML。
<xml>
<data>
<column1>
<note>
<from>Example</from>
<heading>Reminder</heading>
<body>XSLT conversion</body>
</note>
</column1>
</data>
</xml>
我们正在使用的当前XSLT,我们在加载输入时遇到了一些问题。 (如果输入是直接的XML,我们在复制它时没有任何问题,只能使用编码的XML)。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<xml>
<data>
<column1>
<xsl:copy>
<xsl:copy-of select="/node()"/>
</xsl:copy>
</column1>
</data>
</xml>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:3)
由于您使用的是XSLT 2.0,因此可以使用unparsed-text()
来处理输入。如果将路径作为参数传递给文本文件,则可以使用具有相同样式表的文本或XML输入。
输入(test.txt)
<note>
<from>Example</from>
<heading>Reminder</heading>
<body>XSLT conversion</body>
</note>
XSLT 2.0 (使用样式表作为xml输入并将test.txt
作为input
参数传递)
<xsl:stylesheet version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xs">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="input" select="''" as="xs:string"/>
<xsl:template match="/">
<xml>
<data>
<column1>
<xsl:choose>
<xsl:when test="$input">
<xsl:copy-of select="unparsed-text($input)"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="*"/>
</xsl:otherwise>
</xsl:choose>
</column1>
</data>
</xml>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<xml>
<data>
<column1>&lt;note&gt;
&lt;from&gt;Example&lt;/from&gt;
&lt;heading&gt;Reminder&lt;/heading&gt;
&lt;body&gt;XSLT conversion&lt;/body&gt;
&lt;/note&gt;
</column1>
</data>
</xml>
答案 1 :(得分:1)
你“输入XML”根本不是XML - 它只是一段文字。
有效的XML文档必须具有单个根元素,除非文件中存在除显示文本之外的内容,否则您的文件根本没有任何元素。
如果将XML包装在虚拟根元素中,就像这样
<root>
<note>
<from>Example</from>
<heading>Reminder</heading>
<body>XSLT conversion</body>
</note>
</root>
然后您可以使用此样式表
对其进行转换<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xml>
<data>
<column1>
<xsl:value-of select="root"/>
</column1>
</data>
</xml>
</xsl:template>
</xsl:stylesheet>
获得此输出
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<data>
<column1>
<note>
<from>Example</from>
<heading>Reminder</heading>
<body>XSLT conversion</body>
</note>
</column1>
</data>
</xml>