2014-11-05 72 views
1

我使用XSL 1.0双引号,我有这样的XML的去除XSL

<ID>"7080"</ID> 
<NAME>"Media"</NAME> 
<ADDRESS> 
    <STREET_1>"400 Street"</STREET_1> 
</ADDRESS> 

的值用双引号来。我试图在XSL 1.0删除这些双引号,并显示了我的结果为:

<ID>7080</ID> 
    <NAME>Media</NAME> 
    <ADDRESS> 
     <STREET_1>400 Street</STREET_1> 
    </ADDRESS> 

而且,我已经尝试过了申请转换功能的XML的根元素,但它无法正常工作。 任何建议都会有所帮助!

+2

您可以发布您的XSLT,你没试过吗? – 2014-11-05 05:51:10

+0

你可以用字符串替换来做。使用这些链接[xslt字符串替换](http://stackoverflow.com/questions/3067113/xslt-string-replace)[字符串替换](http://geekswithblogs.net/Erik/archive/2008/04/ 01/120915.aspx) – 2014-11-05 05:52:29

+1

如果你有一个像这样的元素,你想要做什么:'“70”80“'? – 2014-11-05 05:56:06

回答

2

您可以使用translate用空字符替换(转义)双引号。

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

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

    <xsl:template match="*/text()"> 
     <xsl:value-of select="translate(., '\&quot;', '')"/> 
    </xsl:template> 

</xsl:stylesheet> 

当身份变换使用,上面还有一个shoutcase XML根元素的包装,这将返回:

<XML> 
    <ID>7080</ID> 
    <NAME>Media</NAME> 
    <ADDRESS> 
     <STREET_1>400 Street</STREET_1> 
    </ADDRESS> 
</XML> 
+0

感谢Stuart的模板,它完全适用于完整的XML。工作了的属性也是这样的:的 \t \t \t \t \t <的xsl:for-每个选择= “@ *”> \t \t \t \t \t \t \t \t \t \t \t < /的xsl:for-each>的 \t \t \t的 \t \t \t DG1209 2014-11-05 07:42:50

+2

如果你接受答案的回答把刻度线。 – 2014-11-05 10:28:54