2013-02-27 23 views
0

xslt处理似乎总是以双引号为分隔符生成属性值。
输入XML:xslt:以单引号(撇号)作为分隔符生成xml属性值

<a b='"c"' /> 

输出XML:

<a b="&quot;c&quot;"/> 

我不得不产生与撇号的属性值分隔符电话设备的XML文件。 此设备仅接受带撇号和双引号作为分隔符的属性值。 例如: -

<SYMB_ITEM ID="BS_Accounts.astAccounts[0].aucAccountName[0]" 
class="symb_item" value='"test_3"'/> 

是否有可能保持撇号作为分隔符属性值与XSLT(xlstproc)?

+0

我想CDATA的' '和类似'disable-output-escaping',总线是这个有效的XML你想要生成什么? – pce 2013-02-27 14:09:42

+0

我这么认为。 http://www.w3.org/TR/REC-xml/文字数据是任何带引号的字符串,不包含用作该字符串分隔符的引号。文字用于指定内部实体的内容(EntityValue),属性的值(AttValue)和外部标识符(SystemLiteral)。请注意,可以在不扫描标记的情况下解析SystemLiteral。 – 2013-02-27 14:24:13

回答

0

我不确定是否正确理解您的问题:将输出设置为“文本”帮助?

<xsl:output method="text" encoding="utf-8" indent="no"/> 

例XSLT片:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="text" encoding="utf-8" indent="no"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates /> 
    </xsl:template> 

    <xsl:template match="a"> 
    &lt;a b='<xsl:value-of select="@b"/>'&gt; 
    </xsl:template>      
</xsl:stylesheet> 

对于下面的XML文件:

<xml> 
    <a b='"c"' /> 
    <a b='"x"' /> 
</xml> 

可生产(如我认为)期望的效果:

<a b='"c"'> 
<a b='"x"'> 
+0

好的,谢谢,这将工作。即使xsl会变得更复杂一点。 – 2013-02-27 15:48:50

+0

很高兴我能帮到你。你能将我的答案标记为有效吗?谢谢 – kamituel 2013-02-27 17:49:26