我有下面的示例xml '
<?xml version="1.0" encoding="utf-8"?>
<TDX>
<AddressData>
<AddressDetail>
<Address FieldName="ReceiverAddress1" FieldValue="CNR TOORONG & 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- escape ="yes",但它没有像预期的那样工作。
我在XSLT文件中使用了"output method="xml"。
请帮我一下。我使用XML记事本来应用转换。我希望输出的xml像这样:
<?xml version="1.0" encoding="utf-8" ?>
- <ConNotes>
- <ConNote>
<ReceiverAddress1>CNR TOORONG & TOORAK RD</ReceiverAddress1>
</ConNote>
</ConNotes>
当您使用disable-output-escaping="yes"
时,输出中的&符号&
不会转义为实体&
。输出是,而不是格式良好的XML文档。当你在IE中打开结果XML时,你会得到"Whitespace…"错误。
修复是微不足道的:只需删除disable-output-escaping="yes"
和输出将是格式良好的:
<ConNotes>
<ConNote>
<ReceiverAddress1>CNR TOORONG & TOORAK RD</ReceiverAddress1>
</ConNote>
</ConNotes>