System.Xml.XmlException标签不匹配报错 是否由XSLT代码中$符号导致?
问题结论
你遇到的报错和你提供的XSLT变量定义代码无关,也和代码中的$符号没有任何关联。
报错原因说明
你收到的System.Xml.XmlException是典型的XML标签配对错误:
The 'table' start tag on line 104 position 10 does not match the end tag of 'div'. Line 133, position 5.
报错已经明确指向问题根因:第104行第10位存在<table>开始标签,但是第133行第5位对应的闭合标签是</div>,二者不匹配导致XML解析失败。
HTML本身语法容错性远高于XML,浏览器渲染HTML时会自动修正部分标签不匹配的问题,所以你会觉得代码运行正常,但XSLT基于XML规范实现,解析时会严格校验标签嵌套、闭合规则,只要存在标签配对错误就会直接抛出异常。
你提供的XSLT代码合法性验证
你贴出的变量定义代码语法完全符合XSLT规范,不存在问题:
<xsl:variable name="AllocationAmount"><xsl:value-of select="Allocation" /></xsl:variable> <xsl:variable name="AllocationFormatted">$<xsl:value-of select="format-number($AllocationAmount, '###,##0.00')" /></xsl:variable> <xsl:variable name="AvailableBalanceAmount"><xsl:value-of select="AvailableBalance" /></xsl:variable> <xsl:variable name="AvailableBalanceFormatted">$<xsl:value-of select="format-number($AvailableBalanceAmount, '###,##0.00')" /></xsl:variable> <xsl:variable name="RequestedAmount"><xsl:value-of select="TotalRequestedAmount" /></xsl:variable> <xsl:variable name="RequestedFormatted">$<xsl:value-of select="format-number($RequestedAmount, '###,##0.00')" /></xsl:variable>
其中$是XSLT中引用已定义变量的标准语法,完全合法,不会引发解析错误。
排查建议
- 直接定位代码第104行到133行的范围,检查
<table>标签的嵌套结构,确认<table>对应的闭合标签是否被误写为</div> - 检查该范围内所有标签的嵌套顺序,排除交叉嵌套问题(例如
<div><table></div></table>这种结构也是XML不允许的)
内容的提问来源于stack exchange,提问作者Helen Liu
相关产品推荐
相关产品推荐

