将XML转换为文本的XSLT
我有一个需求,我需要从XML文档生成一个文本文件,生成的文本文件应该是基于一些规则的特定格式。我的XML如下所示:将XML转换为文本的XSLT,xslt,Xslt,我有一个需求,我需要从XML文档生成一个文本文件,生成的文本文件应该是基于一些规则的特定格式。我的XML如下所示: <info> <Tag1> <Tag2> <Tag3> <PartNo>12 </PartNo> </Tag3> <DBOMInf1> 111 </DBOMInf1> <DBOMInf2> sring </DBOMInf
<info>
<Tag1>
<Tag2>
<Tag3>
<PartNo>12 </PartNo>
</Tag3>
<DBOMInf1> 111 </DBOMInf1>
<DBOMInf2> sring </DBOMInf2>
</Tag2>
<Tag2>
<Tag3>
<PartNo>12 </PartNo>
</Tag3>
<DBOMInf1> 555 </DBOMInf1>
<DBOMInf2> abcd </DBOMInf2>
</Tag2>
</Tag1>
<Tag4>
<Tag5>
<Description>1200 liter </Description>
<No>12</No>
<Name>Engine</Name>
<Id>700</Id>
</Tag5>
</Tag4>
<action>
<actionId>700</actionId>
</action>
</info>
12
111
斯林
12
555
abcd
1200升
12
引擎
700
700
- 预期的文本输出格式:
谢谢看起来您希望每个Tag2元素都有一行,在这种情况下,通过执行以下操作(假设您当前位于info元素上),这些元素可以轻松匹配
<xsl:apply-templates select="Tag1/Tag2" />
你能编辑你的问题并详细说明什么是“一些规则”吗实际上是这样的,因为您的预期输出并不完全清楚。看起来您希望每个Tag2元素都有一行,从Tag4元素中查找额外的信息,但这只是猜测。是的,您是正确的,我有参考格式&我的输出应该有来自Tag2、Tag4等的值,如图所示排列在列中非常感谢,蒂姆,我正在努力回复你。
<xsl:key name="Tags" match="Tag5" use="No" />
<xsl:apply-templates select="key('Tags', normalize-space(Tag3/PartNo))" />
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:key name="Tags" match="Tag5" use="No" />
<xsl:template match="/info">
<xsl:text>ACTIONID|NO|DESCRIPTION|NAME|DBOMInf1|DBOMInf2</xsl:text>
<xsl:value-of select="' '" />
<xsl:apply-templates select="Tag1/Tag2" />
</xsl:template>
<xsl:template match="Tag2">
<xsl:apply-templates select="key('Tags', normalize-space(Tag3/PartNo))" />
<xsl:value-of select="concat(DBOMInf1, '|', DBOMInf2, ' ')" />
</xsl:template>
<xsl:template match="Tag5">
<xsl:value-of select="concat(Id, '|', No, '|', Name, '|', Description, '|')" />
</xsl:template>
</xsl:stylesheet>
ACTIONID|NO|DESCRIPTION|NAME|DBOMInf1|DBOMInf2
700|12|Engine|1200 liter | 111 | sring
700|12|Engine|1200 liter | 555 | abcd