2015-10-05 39 views
0

工作我有以下示例XML`禁用输出转义=是未在以下情况下

<?xml version="1.0" encoding="utf-8"?> 
<TDX> 
<AddressData> 
    <AddressDetail> 
<Address FieldName="ReceiverAddress1" FieldValue="CNR TOORONG &amp; TOORAK RD"/> 
    </AddressDetail>  
</AddressData> 
</TDX> 

这变换此xml成所需的格式的XSLT。我已在这里

<?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"/> 
 
    <xsl:template match="/"> 
 
    <ConNotes> 
 
     <ConNote> 
 
     <ReceiverAddress1> 
 
      <xsl:value-of disable-output-escaping="yes" select="TDX/AddressData/AddressDetail/Address[@FieldName='ReceiverAddress1']/@FieldValue"/> 
 
     </ReceiverAddress1> 
 
     </ConNote> 
 
    </ConNotes> 
 
    </xsl:template> 
 
</xsl:stylesheet>

单个节点每当我尝试使用XSLT我的错误来转换XML“空白并不在此位置允许的”。我发现这个错误是由地址节点的FieldValue属性中存在的特殊字符&造成的。
我试过disable-output-escpaing =“yes”,但它没有像预期的那样工作。
我在XSLT文件中使用了“output method =”xml“”。
请帮我这个。我正在使用XML记事本来应用转换。 我期待输出XML这样的:

<?xml version="1.0" encoding="utf-8" ?> 
 
- <ConNotes> 
 
- <ConNote> 
 
    <ReceiverAddress1>CNR TOORONG & TOORAK RD</ReceiverAddress1> 
 
    </ConNote> 
 
    </ConNotes>

+0

您可以编辑您的问题,以显示演示该问题,请完整的XSLT?另外,你能显示你的预期输出吗?最后,你最近怎么执行转换?谢谢! –

+0

@TimC我编辑了这个问题。请立即检查。 – Naveen

+0

你为什么试图产生无效的XML作为你的输出? &符号需要被转义以使其有效。 –

回答

1

当您使用disable-output-escaping="yes"然后在输出的符号&不转义为实体&amp;。输出是而不是格式良好的XML文档。当您在IE中打开结果XML时,您将看到“空白...”错误。

的修复很简单:只需卸下disable-output-escaping="yes"和 输出将得到很好的形成:

<ConNotes> 
<ConNote> 
<ReceiverAddress1>CNR TOORONG &amp; TOORAK RD</ReceiverAddress1> 
</ConNote> 
</ConNotes> 
相关问题