用于xslt中的每个
输入:用于xslt中的每个,xslt,Xslt,输入: <lq> <ol class="- topic/ol "> <li>Text 1 <ol class="- topic/ol "> <li>Text 2</li> <li>Text 3</li> </ol> </li> <li>Text 4</li&
<lq>
<ol class="- topic/ol ">
<li>Text 1
<ol class="- topic/ol ">
<li>Text 2</li>
<li>Text 3</li>
</ol>
</li>
<li>Text 4</li>
<li>Text 5</li>
</ol>
</lq>
文本1
文本2
文本3
文本4
文本5
我们应该:
<node>
<p type="extract_number_1">Text 1</p>
<p type="extract_number_2">Text 2</p>
<p type="extract_number_2">Text 3</p>
<p type="extract_number_1">Text 4</p>
<p type="extract_number_1">Text 5</p>
</node>
文本1
文本2
文本3
文本4
文本5
试用代码:
<xsl:template match="lq/ol">
<xsl:for-each select="li">
<p type="extract_number_{position()}">
<xsl:apply-templates/>
</p>
</xsl:for-each>
</xsl:template>
上面我已经提到了我的输入
输出应该是
和尝试过的代码
。这里的
应该是位置
作为我的代码,我没有得到预期的输出。我正在使用XSLT2.0。我怎样才能解决这个问题。谢谢。如果您希望属性中的数字显示嵌套级别,请使用例如
<xsl:template match="lq/ol">
<xsl:apply-templates select=".//li"/>
</xsl:template>
<xsl:template match="lq/ol//li">
<p type="extract_number_{count(ancestor::ol)}">
<xsl:value-of select="text()"/>
</p>
</xsl:template>
如果您希望type
属性中的数字显示嵌套级别,请使用例如
<xsl:template match="lq/ol">
<xsl:apply-templates select=".//li"/>
</xsl:template>
<xsl:template match="lq/ol//li">
<p type="extract_number_{count(ancestor::ol)}">
<xsl:value-of select="text()"/>
</p>
</xsl:template>
select=“li”
应该一直往下看:select=“.//li”
(只是猜测,我这里没有工具集)type
属性中的数字来自哪里?这似乎根本不是一个职位。您是否查找嵌套级别?@MartinHonnen这是li
的位置<代码>文本1
属于级别1li
<代码>文本2
和文本3
在级别1li
的内部。然后他们是第二级。我用过。但是不起作用。select=“li”
应该一直向下:select=“.//li”
(只是猜测,我这里没有工具集)type
属性中的数字来自哪里?这似乎根本不是一个职位。您是否查找嵌套级别?@MartinHonnen这是li
的位置<代码>文本1
属于级别1li
<代码>文本2
和文本3
在级别1li
的内部。然后他们是第二级。我用过。但不起作用。