Xml 如何从全局参数读取输入文件,修改并发送到输出?[XSLT]
我应该在模板“initial”中写些什么来从输入读取文件、修改输入中的几个节点并将修改后的文件发送到输出 以下是一个示例:Xml 如何从全局参数读取输入文件,修改并发送到输出?[XSLT],xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我应该在模板“initial”中写些什么来从输入读取文件、修改输入中的几个节点并将修改后的文件发送到输出 以下是一个示例: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-resul
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs" xmlns:saxon="http://saxon.sf.net/"
extension-element-prefixes="saxon"
version="2.0">
<xsl:output method="xml" indent="yes" media-type="text/xml" />
<xsl:param name="$input_file"/>
<xsl:param name="input" select="saxon:parse($input_file)"></xsl:param>
<xsl:template match="/" name="initial">
<xsl:result-document href="output.xml">
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
只需编写执行要进行的转换更改的模板,并将模板应用于所有解析的节点:
富1
酒吧1
]]>
如果您需要特定的输出文档,请包装应用模板,例如
富1
酒吧1
]]>
那么,全局参数值究竟是一个包含XML输入位置的URL,还是一个包含XML输入内容的字符串saxon:parse
将用XML解析字符串。这是一个用XML解析的字符串谢谢你的回答。我还有一个问题,希望你能帮助我。是否可以匹配$variable而不是字符串“bar”。例如,我从一个输入xml文件中读取一个值。然后,我必须在第二个XML文件中找到节点,它是那个特定的值,只对那些节点做一些修改。考虑用你输入的样本、你想要的结果和你当前得到的结果来问一个新问题。上面的示例匹配使用apply templates(应用模板)处理的任何文档中名为bar
的元素,也就是说,当您有更多输入文档时,只需确保为其中的元素编写模板,并根据需要执行
。
<xsl:output method="xml" indent="yes" media-type="text/xml" />
<xsl:param name="input_xml" as="xs:string"><![CDATA[<root>
<foo>foo 1</foo>
<bar>bar 1</bar>
</root>]]></xsl:param>
<xsl:param name="input" select="saxon:parse($input_xml)"/>
<xsl:template match="/" name="initial">
<xsl:apply-templates select="$input/node()"/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="bar">
<foobar>
<xsl:apply-templates select="@* | node()"/>
</foobar>
</xsl:template>
</xsl:stylesheet>
<xsl:output method="xml" indent="yes" media-type="text/xml" />
<xsl:param name="input_xml" as="xs:string"><![CDATA[<root>
<foo>foo 1</foo>
<bar>bar 1</bar>
</root>]]></xsl:param>
<xsl:param name="input" select="saxon:parse($input_xml)"/>
<xsl:template match="/" name="initial">
<xsl:result-document href="output.xml">
<xsl:apply-templates select="$input/node()"/>
</xsl:result-document>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="bar">
<foobar>
<xsl:apply-templates select="@* | node()"/>
</foobar>
</xsl:template>
</xsl:stylesheet>