需要将标签属性放入标题中



我让 xml 像:

<sect1 label="Chapter 1:">
<title>Pass</title>
<sect2 label="1.1">
<title>Pass 1</title>
<sect3 label="1.1.1">
<title>Pass 2</title>
<sect4 label="1.1.1.1">
<title>Pass 3</title>
</sect4>
</sect3>
</sect2>
</sect1>

XSL 尝试如下:

<xsl:template match="/">
<xsl:text>Heading,,,,,Sub Heading</xsl:text>
<xsl:for-each select="//title[starts-with(name(..), 'sect')] ">
<xsl:value-of select="for $i in 1 to count(ancestor::*) - 1 return ','" separator=""/>
<xsl:value-of select="."/>
<xsl:text>&#10;</xsl:text>
</xsl:for-each>
</xsl:template>

获取输出为:

Heading,,,,,Sub Heading
Pass
,Pass 1
,,Pass 2
,,,Pass 3

预期输出为:

Heading,,,,,Sub Heading
Chapter 1: Pass
,1.1 Pass 1
,,1.1.1 Pass 2
,,,1.1.1.1 Pass 3

我需要标签属性在标题之前。

我认为您需要做的就是更改此设置...

<xsl:value-of select="."/>

为此,要包含父级的label属性

<xsl:value-of select="../@label, ."/>

试试这个块(我已经稍微简化了xsl:for-each,并在标题行之后添加了换行

<xsl:template match="/">
<xsl:text>Heading,,,,,Sub Heading&#10;</xsl:text>
<xsl:for-each select="//*[starts-with(name(), 'sect')]/title">
<xsl:value-of select="for $i in 1 to count(ancestor::*) - 1 return ','" separator=""/>
<xsl:value-of select="../@label, ."/>
<xsl:text>&#10;</xsl:text>
</xsl:for-each>
</xsl:template>

最新更新