0
我有大量的文件中包含以下a.html結構的恆定數量:XSLT加入兄弟姐妹
<html>
<body>
<div class="a">aaa
<div class="b">bbb</div>
<div class="c">ccc1
<div class="d">ddd11
<div class="e">eee11</div>
<div class="f">fff11
<div class="g">ggg111</div>
<div class="g">ggg112</div>
<div class="g">ggg113</div>
<div class="g">ggg114</div>
<div class="g">ggg115</div>
<div class="g">ggg116</div>
</div>
</div>
<div class="d">ddd12
<div class="e">eee12</div>
<div class="f">fff12
<div class="g">ggg121</div>
<div class="g">ggg122</div>
<div class="g">ggg123</div>
<div class="g">ggg124</div>
</div>
</div>
</div>
<div class="c">ccc2
<div class="d">ddd21
<div class="e">eee21</div>
<div class="f">fff21
<div class="g">ggg211</div>
<div class="g">ggg212</div>
<div class="g">ggg213</div>
<div class="g">ggg214</div>
<div class="g">ggg215</div>
</div>
</div>
</div>
...
</div>
</body>
</html>
- DIV類=「C」的數是在每個文件(可變零個或多個)
- DIV類=「d」的數量是內部的各變量(零個或多個)
- 的DIV類=「G」的數量是內部的各變量(零個或多個)
我想在所有文件中有一個div class =「c」等於max_c參數。
我使用下面的外殼腳本傳遞max_c參數與至3個相等的一個值:
#!/bin/bash
xsltproc --param max_c 3 a.xslt a.html
我使用下面a.xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="max_c"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="div[@class='a']">
<xsl:copy>
<xsl:apply-templates select="div[@class='a']" />
<xsl:apply-templates select="div[@class='b']" />
<xsl:apply-templates select="div[@class='c']" />
<xsl:call-template name="AddC">
<xsl:with-param name="count" select="$max_c - count(div[@class='c'])" />
</xsl:call-template>
</xsl:copy>
</xsl:template>
<xsl:template name="AddC">
<xsl:param name="count" />
<xsl:if test="$count > 0">
<div class="c">ccc
</div>
<xsl:call-template name="AddC">
<xsl:with-param name="count" select="$count - 1" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
的輸出是下面的:
<html>
<body>
<div>
<div class="b">bbb</div>
<div class="c">ccc1
<div class="d">ddd11
<div class="e">eee11</div>
<div class="f">fff11
<div class="g">ggg111</div>
<div class="g">ggg112</div>
<div class="g">ggg113</div>
<div class="g">ggg114</div>
<div class="g">ggg115</div>
<div class="g">ggg116</div>
</div>
</div>
<div class="d">ddd12
<div class="e">eee12</div>
<div class="f">fff12
<div class="g">ggg121</div>
<div class="g">ggg122</div>
<div class="g">ggg123</div>
<div class="g">ggg124</div>
</div>
</div>
</div>
<div class="c">ccc2
<div class="d">ddd21
<div class="e">eee21</div>
<div class="f">fff21
<div class="g">ggg211</div>
<div class="g">ggg212</div>
<div class="g">ggg213</div>
<div class="g">ggg214</div>
<div class="g">ggg215</div>
</div>
</div>
</div>
<div class="c">ccc$count</div>
</div>
</body>
</html>
這幾乎是我想要的,有兩個例外:
- 第一個div已經失去了它的類= 「a」 和它的價值AAA
- 增加的DIV CLASS = 「C」 應該有ccc3的價值,而不是CCC $算
什麼我做錯了嗎?
像往常一樣,我提前感謝您的幫助。
請只能選擇相關的標籤。你的問題不是關於[tag:xquery],XQuery甚至不被你使用的工具支持。 –
您的XSLT是否缺少某些內容,因爲它目前只輸出'ccc'而不是'ccc $ count'? –
對不起,這個網站是新手,對xslt,xquery,xpath等很新。我現在纔看到你的通知。謝謝,我已注意到並仔細閱讀了我的帖子,按照要求更正了所有標籤。 – Yalmar