XSLT:输出中的重复节点
XSLT: repetitive nodes in the output
我正在努力进行简单的 xsl 转换,我无法找出为什么我的输出结果中有两个元素两次。这是我的代码:
xsl 样式表:
<xsl:template match="/">
<xsl:text>[{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}]</xsl:text>
</xsl:template>
<xsl:template match="Title">
<xsl:text>{</xsl:text>
<xsl:value-of select="@id"/>
<xsl:apply-templates select="descendant::Title"/>
<xsl:text>}</xsl:text>
</xsl:template>
xml:
<?xml version="1.0" encoding="UTF-8"?>
<Start>
<Title id="1">
<Title id="2">Bob</Title>
<Age>39</Age>
<Address>
<Title id="3">10 Idle Lane</Title>
<City>Yucksville</City>
<PostalCode>xxxyyy</PostalCode>
</Address>
</Title>
<Title id="4">
<Title id="5">Bill</Title>
<Age>39</Age>
<Title id ="6">
<Title id="7">10 Idle Lane</Title>
<City>Yucksville</City>
<PostalCode>xxxyyy</PostalCode>
<Title id="8">10 Idle Lane</Title>
</Title>
<Title id="9">10 Idle Lane</Title>
</Title>
</Start>
输出:
[{
{1{2}{3}}
{4{5}{6{7}{8}}{7}{8}{9}}
}]
我不希望在我的输出中包含的元素是最后的数字:{8}{9}。我想这与后代轴选择器有关。
是的,后代轴选择器会选择所有子孙等。因此您只需要将模板应用于子项。这应该有效:
<xsl:template match="/">
<xsl:text>[{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}]</xsl:text>
</xsl:template>
<xsl:template match="Title">
<xsl:text>{</xsl:text>
<xsl:value-of select="@id"/>
<xsl:apply-templates />
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="text()" />
我正在努力进行简单的 xsl 转换,我无法找出为什么我的输出结果中有两个元素两次。这是我的代码:
xsl 样式表:
<xsl:template match="/">
<xsl:text>[{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}]</xsl:text>
</xsl:template>
<xsl:template match="Title">
<xsl:text>{</xsl:text>
<xsl:value-of select="@id"/>
<xsl:apply-templates select="descendant::Title"/>
<xsl:text>}</xsl:text>
</xsl:template>
xml:
<?xml version="1.0" encoding="UTF-8"?>
<Start>
<Title id="1">
<Title id="2">Bob</Title>
<Age>39</Age>
<Address>
<Title id="3">10 Idle Lane</Title>
<City>Yucksville</City>
<PostalCode>xxxyyy</PostalCode>
</Address>
</Title>
<Title id="4">
<Title id="5">Bill</Title>
<Age>39</Age>
<Title id ="6">
<Title id="7">10 Idle Lane</Title>
<City>Yucksville</City>
<PostalCode>xxxyyy</PostalCode>
<Title id="8">10 Idle Lane</Title>
</Title>
<Title id="9">10 Idle Lane</Title>
</Title>
</Start>
输出:
[{
{1{2}{3}}
{4{5}{6{7}{8}}{7}{8}{9}}
}]
我不希望在我的输出中包含的元素是最后的数字:{8}{9}。我想这与后代轴选择器有关。
是的,后代轴选择器会选择所有子孙等。因此您只需要将模板应用于子项。这应该有效:
<xsl:template match="/">
<xsl:text>[{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}]</xsl:text>
</xsl:template>
<xsl:template match="Title">
<xsl:text>{</xsl:text>
<xsl:value-of select="@id"/>
<xsl:apply-templates />
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="text()" />