2010-10-20 67 views
2

我對XSLT比較陌生。我遇到了一個我不知道如何解決的問題。我有一個非常大的XML文檔,我正試圖將其轉換爲另一個更小,精煉的XML文檔。在XSLT中轉換&?

大型XML文檔這種風格:

<Property> 
    <name>Document name</name> 
    <value>SomeValue</value> 
</Property> 
... 
<Property> 
    <name>Document Title</name> 
    <value>Me %amp; you</value> 
</Property> 

你如何在價值元素之間轉換的價值,並保持「&放大器」;完整。顯然,由於該文本中的&符號轉義,導致此XML的轉換正在導致錯誤。

注意:這個大的XML是由從服務器拉取數據的應用程序生成的。所以我有點卡住處理逃逸符號:(

+0

你的問題不清楚。無論何時使用XML(或HTML)方法對輸出進行序列化,隨着XML規範的要求,'&'字符將被轉義爲'&'實體引用。只有在使用'text'方法序列化輸出時,纔會執行轉義。 – 2010-10-20 20:46:59

+0

好問題,+1。查看我的答案,瞭解使用所需屬性進行轉換的簡單示例。 – 2010-10-21 02:14:35

回答

1

下面是一個簡單的(很基本的)例如,使用標識規則:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

當這種轉化應用上所提供的XML文件

<t> 
<Property> 
    <name>Document name</name> 
    <value>SomeValue</value> 
</Property> 
... 
<Property> 
    <name>Document Title</name> 
    <value>Me &amp; you</value> 
</Property> 
</t> 

它被轉化成本身(身份):

<t> 
    <Property> 
     <name>Document name</name> 
     <value>SomeValue</value> 
    </Property> 
... 
<Property> 
     <name>Document Title</name> 
     <value>Me &amp; you</value> 
    </Property> 
</t> 

和字符&amp;被保留。

+0

+1謝謝Dimitre!一旦我做了一些測試運行,我會檢查這一個! – 2010-10-21 13:50:14