是否可以匹配'任何節點尚未匹配/處理'?最好不要讓我的樣式表變成一個巨大的for-each/Choose語句,因爲當前的排序很關鍵。任何節點尚未處理的XSLT模板?
該項目仍在開發中,並且已經在現場環境中使用,所以簡單地說,代碼處於快速流動的狀態,以響應我們獲取的實時數據。我正在生成PDF文檔通過FO從XML中獲取可能包含我還不知道的節點的XML,並且希望爲我的XSL-FO轉換添加一個「故障轉移」指令,將所有未記錄的節點置於文檔的開頭以鮮紅色,加快發現。
我不能只是忽略突然的節點,因爲數據需要要處理。我可以找到「孤兒」數據的速度越快,我可以更快地得到它的正確處理和出門。
我試着玩<xsl:template match="*">...</xsl:template>
和各種priority =「」設置,但它當然適用於每個節點。
例如,我可能在一個部分有這個,因爲這些XML塊不能保證輸入順序正確。 (代碼塊格式化是不是爲我工作 - 在沒有四個空間縮進結果,很抱歉:(
<xsl:template match="AccountSummary">
<fo:block margin-left="2" space-before="1" space-after="1" text-align="center">
<xsl:apply-templates select="Label"/>
</fo:block>
<xsl:apply-templates select="AccountInfo"/>
<xsl:apply-templates select="AccountProfile"/>
<xsl:apply-templates select="ChangeInValueOfAccounts"/>
<!-- ... more goes here -->
</xsl:template>
我想這樣做
<xsl:template match="AccountSummary">
<fo:block margin-left="2" space-before="1" space-after="1" text-align="center">
<xsl:apply-templates select="Label"/>
</fo:block>
<xsl:apply-templates select="AccountInfo"/>
<xsl:apply-templates select="AccountProfile"/>
<xsl:apply-templates select="ChangeInValueOfAccounts"/>
<!-- ... more goes here -->
<xsl:for-each select="not otherwise matched">
<!-- call zomgRED template -->
</xsl:for-each>
</xsl:template>
理想我寧願在zomgRED
s到在頂部,但在底部也可以工作,或者用文本標記標記,任何東西都可以在最終文檔中吐出文本,而不是默默地吃掉它
由於XSLT優先匹配基於模板特異性的顯式層次結構,除此之外,您應該可以使用'match ='*''。如果您發佈了一個小樣本XML和XSLT,它可能會有所幫助。將所有未知節點放置在頂部的要求將會很難,因爲在整個文檔處理完成之前,您不知道哪些節點是不匹配的。 –
啊,我當然忘了逃避我的< s。我可以應付「按順序」或必要時在任何地方,但在頂部會更簡單。 – BrunoXSLT
向原始帖子添加了轉義。簡而言之,當我嘗試使用< xsl:template match =「*」> < fo:block> ##### < xsl:apply-templates />&lt; xsl:template>它適用於而不是任何其他模板通過match =而不是select =來應用,並且突然間每個節點都會在其前面用#####自己的塊吐出:/ – BrunoXSLT