2016-11-11 217 views
1

的屬性我用下面的序列化節點:XSLT連載節點將刪除節點

<xsl:template match="*" mode="serialize"> 
<xsl:text>&lt;</xsl:text> 
<xsl:value-of select="name()"/> 
<xsl:text>&gt;</xsl:text> 
<xsl:apply-templates mode="serialize"/> 
<xsl:text>&lt;/</xsl:text> 
<xsl:value-of select="name()"/> 
<xsl:text>&gt;</xsl:text> 
</xsl:template> 

有什麼辦法讓屬性序列化的節點之後?

回答

1

根據您的XSLT處理器,您可能首先需要檢查是否支持XPath 3.0 serialize函數https://www.w3.org/TR/xpath-functions-30/#func-serialize或內置擴展函數來執行此作業。

如果要使用XSLT執行此操作,那麼在模板中,還需要處理屬性,例如,

<xsl:template match="*" mode="serialize"> 
<xsl:text>&lt;</xsl:text> 
<xsl:value-of select="name()"/> 
<xsl:apply-templates select="@*" mode="serialize"/> 
... 
</xsl:template> 

注意,並制定瞭解決方案,如http://lenzconsulting.com/xml-to-string/存在可能會更好,然後快速嘗試一些模板作爲一個適當的系列化這確實產生命名格式良好的XML即往返是相當大的挑戰。

+0

如何處理屬性? – Roniu

+0

好吧,我的建議'''已經處理過了,您需要編寫一個模板'match =「@ *」mode =「serialize 「很明顯,正確的序列化和正如我一樣,做這件事很困難,所以我會建議使用一個解決方案。否則,使用所謂「XML」序列化的人最終會抱怨這裏或其他地方的XML解析抱怨錯誤。 –