感謝您的期待。XSLT,顯示PCDATA爲CDATA
我正在嘗試編寫一個.xsl文件,它將生成HTML,通過僅顯示具有適用性代碼的文本來更容易地錯誤檢查我們的.xml文件。
我們XML的普通查看器應用程序將根據XML中的應用代碼過濾內容。 (適用性代碼代表各個車型。)無法禁用查看器應用程序中的過濾,這意味着可能有人必須多次檢查每個文件(每個應用代碼一次)以確保每個模型的正確性。
我有嵌套在它的標籤XML數據:
<para>Disconnect main chassis wire harness connector
MC57 (<xref applicable="UOC_GP0 UOC_HG0 UOC_WC0 UOC_2U0"
figid="F01"/><xref applicable="UOC_GP1 UOC_HG1 UOC_WC1
UOC_2U1" figid="F01A"/>, Item 3) from main cab wire
harness connector MC57 (<xref applicable="UOC_GP0
UOC_HG0 UOC_WC0 UOC_2U0" figid="F01"/>
<xref applicable="UOC_GP1 UOC_HG1 UOC_WC1 UOC_2U1"
figid="F01A"/>, Item 2).</para>
相關的XSL很簡單:
<xsl:for-each select="para">
   Step1 Para:  
<xsl:value-of select="." /><br />
</xsl:for-each>
但濾除外部參照標籤和離開輸出:
Step1 Para: Disconnect main chassis wire harness connector
MC57 (, Item 3) from main cab wire harness connector MC57 (, Item 2).
輸出對於如何寫入xsl是正確的,但不是我想要的。
我想輸出中包含外部參照標籤和他們的屬性,它們混合成的對,作爲書面:
Disconnect main chassis wire harness connector
MC57 (<xref applicable="UOC_GP0 UOC_HG0 UOC_WC0 UOC_2U0"
figid="F01"/><xref applicable="UOC_GP1 UOC_HG1 UOC_WC1
UOC_2U1" figid="F01A"/>, Item 3) from main cab wire
harness connector MC57 (<xref applicable="UOC_GP0
UOC_HG0 UOC_WC0 UOC_2U0" figid="F01"/>
<xref applicable="UOC_GP1 UOC_HG1 UOC_WC1 UOC_2U1"
figid="F01A"/>, Item 2).
這是醜陋的,但將讓評卷人知道有與適用性外部參照在第
在xsl中,有沒有辦法指示處理器應該將標記的內容視爲CDATA而不是PCDATA?這似乎是顯而易見的解決方案,但我沒有找到辦法做到這一點。
或者其他方式去做這件事?隨着在para標籤隨機嵌入xref標籤,我有點難住。
感謝
那麼您使用哪種XSLT版本的XSLT處理器?如果輸出是HTML,但您想要在輸入中顯示某些節點的XML標記,則需要對它們進行序列化,這在XSLT 3中是可行的(由開源Saxon 9.8 HE支持),例如, ''而不是''你有'的值'。 –
你也可以做一個'xsl:apply-templates'並匹配'xref'並自己序列化它。 –
對我來說,最明顯的解決方案是轉換每個''(包括文本節點的孩子)的所有孩子,而不是輸出其字符串值,就像您迄今爲止收到的答案一樣。當然這是最自然的解決方案。 –