下面是我的 XML 示例。看起来这些值已被编码。
我正在创建示例 xslt 模板,如下所示
<xsl:value-of select="fee_number"/>
如何解码值以便它们正常显示? 谢谢。
<fees>
<fee>
<fee_number>_x0031_645111</fee_number>
<fee_type>Property_x0020_Registration_x0020_Fee</fee_type>
<fee_issued_date>_x0030_1_x002F_01_x002F_2023</fee_issued_date>
<fee_amount>_x0024_13.00</fee_amount>
<fee_transfer_date>_x0030_5_x002F_12_x002F_2023</fee_transfer_date>
<fee_transfer_status>Yes</fee_transfer_status>
</fee>
<fee>
<fee_number>_x0031_459853</fee_number>
<fee_type>Property_x0020_Registration_x0020_Fee</fee_type>
<fee_issued_date>_x0030_1_x002F_01_x002F_2022</fee_issued_date>
<fee_amount>_x0024_13.00</fee_amount>
<fee_transfer_date>_x0030_5_x002F_16_x002F_2022</fee_transfer_date>
<fee_transfer_status>Yes</fee_transfer_status>
</fee>
<fees>
在 XSLT 3.0 中你可以这样做:
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="text()">
<xsl:analyze-string select="." regex="_x([0-9A-F]*)?_">
<xsl:matching-substring>
<xsl:value-of select="parse-xml-fragment('&#x'||regex-group(1)||';')" />
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="." />
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
获得:
<?xml version="1.0" encoding="UTF-8"?>
<fees>
<fee>
<fee_number>1645111</fee_number>
<fee_type>Property Registration Fee</fee_type>
<fee_issued_date>01/01/2023</fee_issued_date>
<fee_amount>$13.00</fee_amount>
<fee_transfer_date>05/12/2023</fee_transfer_date>
<fee_transfer_status>Yes</fee_transfer_status>
</fee>
<fee>
<fee_number>1459853</fee_number>
<fee_type>Property Registration Fee</fee_type>
<fee_issued_date>01/01/2022</fee_issued_date>
<fee_amount>$13.00</fee_amount>
<fee_transfer_date>05/16/2022</fee_transfer_date>
<fee_transfer_status>Yes</fee_transfer_status>
</fee>
</fees>
如果您的 XSLT 处理器支持通过 .Net c# 语言进行扩展,您可以按照以下方式编写 XSLT。
c#
void Main()
{
string var = "_x0031_645111";
XmlConvert.DecodeName(var).Dump();
}
输出
1645111