这是我的XML文档。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p> <!-- index 0 -->
<w:pPr>
<w:pStyle w:val="Heading1"/>
</w:pPr>
<w:r>
<w:t>
Paragraph1
</w:t>
</w:r>
</w:p>
<w:p> <!-- index 1 -->
<w:pPr>
<w:pStyle w:val="TOC1"/>
</w:pPr>
<w:r>
<w:t>
TOC1
</w:t>
</w:r>
</w:p>
<w:p> <!-- index 2 -->
<w:pPr>
<w:pStyle w:val="TOC2"/>
</w:pPr>
<w:r>
<w:t>
TOC2
</w:t>
</w:r>
</w:p>
<w:p> <!-- index 3 -->
<w:pPr>
<w:pStyle w:val="TOC3"/>
</w:pPr>
<w:r>
<w:t>
TOC3
</w:t>
</w:r>
</w:p>
<w:p> <!-- index 4 -->
<w:pPr>
</w:pPr>
<w:r>
<w:t>
Paragraph2
</w:t>
</w:r>
</w:p>
<w:p> <!-- index 5 -->
<w:pPr>
<w:pStyle w:val="Heading1"/>
</w:pPr>
<w:r>
<w:t>
Paragraph3
</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
所以,现在我想计算以下两件事
1.Count以{TOC'开头的<w:pStyle>
值的元素的起始索引位置。这是从第一个<w:p>
元素开始(假设索引从'0'开始)。所以,我想要以下输出
2.以“TOC”开头的<w:pStyle>
值的总数。我已按照以下表达式计算。所以请指导我先获得...
<xsl:attribute name="totalTOC">
<xsl:value-of select="count(//w:body/w:p[w:pPr[w:pStyle[starts-with(@w:val,'TOC')]]])"/>
<xsl:attribute>
我的要求输出是:
<Document>
<TOC startIndex="1" totalTOC="3"/>
</Document>
答案 0 :(得分:2)
您可以使用preceding-sibling
轴:
count(//w:body/w:p[w:pPr[w:pStyle[starts-with(@w:val,'TOC')]]][1]/preceding-sibling::*)
。
这将选择符合条件的第一个元素,并返回其前一个兄弟的计数(当前索引)。对于基于一个索引,只需添加1。