2016-10-10 65 views
1

我需要檢測第一個標題元素並在此第一個標題元素之前打印出特殊註釋。XSL變換:計數元素

<xsl:template match="title[string-length(.) &gt; 0]" mode="content"> 
    <xsl:comment>%title id="<xsl:value-of select="."/>"%</xsl:comment> 
</xsl:template> 

我可以檢測到這些標題元素,但是我需要做些什麼來計算並在第一個標題元素之前獲得此特殊評論?

編輯: 感謝您的意見,但我不能讓它工作不幸。所以,另外我在這裏添加XML源代碼,也許有人可以指出我優雅的解決方案?

<body id="EL_bodyN10001"><text id="EL_textN10001"><page id="EL_pageN10004"><p id="EL_pN10006"></p><p id="EL_pN10012">lorem ipsum dolor sit</p><p id="EL_pN10045">msdfsdkfh sdfsfksd sfsdfsdfsdfdsfh <strong id="EL_strongN1004C">LOREM IPSUM</strong>. lorem aklsjd asda sdasjdlkjaksld</p> 
<title id="EL_titleN10001">my first title here</title> 
<subheading id="EL_subheadingN1006E" level="1">MY FIRST SUBHEADING</subheading><p id="EL_pN10075">sdfjlksjfsjdf sfsjfljsdf sfklöskdfö sdfölksföksölf sdfksfk</p><p id="EL_pN10084">tzputozu lultpülupützu tultlutzulztu wewe rrtrt.</p><title id="EL_titleN10001">my second title</title><subheading id="EL_subheadingN100D9" level="1">THIS IS MY SECONT SUBHEADING</subheading><p id="EL_pN100E0">this is another senseless paragraph test.</p></page></text></body> 
+0

是否所有'同一母公司的title'元素的兄弟姐妹?然後'match =「title [normalize-space()] [1]」'就足夠了。或者你可以檢查沒有'之前::標題'。 –

+0

是的,元素是同一父母的同胞兄弟姐妹。 感謝您的提示。我嘗試了這種方式: 的 \t \t \t \t \t的 \t \t \t \t XXX FIRST%標題ID =」 的 「% \t \t \t \t \t \t \t \t \t \t \t %標題ID = 「的」 % \t \t \t \t \t \t \t 不起作用,我不知道爲什麼 – michbeck

+0

你在計算什麼? – Flynn1179

回答

0

最後的解決方案是使用:

<xsl:variable name="subHeadingPos" select="count(./preceding-sibling::subheading)+1"/> 

謝謝你,夥計們

0

嘗試

<xsl:template match="title[string-length(.) &gt; 0][1]" mode="content"> <xsl:comment>XXX FIRST %title id="<xsl:value-of select="."/>"%</xsl:comment> </xsl:template>

然後寫第二個模板match="title[string-length(.) &gt; 0][position() > 1]"與其他內容。