我对XSLT很陌生,所以我可能会遗漏一些非常明显的东西。
我有这种格式的源XML:
来源:
<?xml version="1.0" encoding="UTF-8"?>
<variables id="simulation">
<variable id="Code">75</variable>
<variable id="Type">Varial</variable>
<variable id="owner">Jeremy</variable>
</variables>
我想处理它,看起来像这样:
<Envelope>
<Code>75</Code>
<Type>Varial</Type>
<Owner>Jeremy</Owner>
</Envelope>
我尝试使用xsl:variable来保存值
<xsl:variable
select="<xsl:template match="variable[@id='Code']" name="varcode">">
</xsl:variable>
使用在线工具验证和测试XSLT我没有成功完成任务。
到目前为止,这是我的XSLT,它能够获取第一个元素的值:
<xsl:template match="variable[@id='Code']" name="varcode">
<Envelope>
<Code><xsl:value-of select="."/></Code>
<Type></Type>
<Owner></Owner>
</Envelope>
</xsl:template>
</xsl:stylesheet>
任何人都可以帮助我获得其余的价值吗? 感谢
答案 0 :(得分:2)
试试这个简单的xslt
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="variables[@id='simulation']">
<Envelope>
<Code>
<xsl:value-of select="variable[@id='Code']" />
</Code>
<Type>
<xsl:value-of select="variable[@id='Type']" />
</Type>
<Owner>
<xsl:value-of select="variable[@id='owner']" />
</Owner>
</Envelope>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
写两个模板
<xsl:template match="/*">
<Envelope>
<xsl:apply-templates/>
</Envelope>
</xsl:template>
<xsl:template match="variable[@id]">
<xsl:element name="{@id}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
您可以通过简单但通用的方式处理该任务。