我有子節點 我可以有字FO之間的循環:塊不是像另一個詞:寫混合節點(標籤+文本)只更換特定的節點
<mynode>
Hi ok
<fo:block>
hi ok fo block
< /fo:block>
maybe another text node here...
</mynode>
我有<div>
更換<fo:block>
但我不得不離開在同一位置的文本(前,後FO可能:如果存在塊)
我試試這個代碼,但(假設循環子(*)節點):
<xsl:for-each select="/mynode">
<xsl:if test="text()"><xsl:value-of select="text()"/></xsl:if>
<xsl:for-each select="child::*">
<!--for every child node of mynode-->
<xsl:choose>
<xsl:when test="normalize-space(local-name())
= normalize-space('block')">
<xsl:call-template name="fo-block">
<xsl:with-param .../>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:if test="text()"><xsl:value-of select="text()"/></xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
if test = text()所以節點包含文本然後顯示文本,否則我得到節點的名稱並測試是否是塊:如果是這樣,我調用特定模板,否則測試是否包含文本。
似乎現在工作..所以,可能是我的範圍正確的選擇/代碼?
謝謝!
羅比
什麼是兩個模板匹配'評論(目的)和' '處理指令()'?這些節點已由身份轉換模板處理。AFAICT,這些模板的唯一影響是產生一個錯誤消息「錯誤:模糊規則匹配...」。 – 2015-04-02 18:57:09
我懷疑當我多年前做了我的身份轉換版本時,我將它們考慮在內,因爲我經常想分開處理它們。它們不是按照我最初給出的一般規則來處理的,因爲它們不匹配匹配模式'@ * | *'(除非我在這裏丟失了某些東西)。但是,如果你喜歡,我可以讓你的觀察真實,並刪除它們 – 2015-04-03 00:56:30