如何在动态生成的XSLT中添加datatype属性?解决验证报错
问题分析与解决
你的错误根源在于违反了XML基础语法:XML元素的结束标签绝对不能包含任何属性。你写的<id datatype="Number">3</id datatype="Number">里,结束标签</id>后额外加了datatype="Number",这直接导致XSLT验证失败。
正确的写法
只需在元素的开始标签上添加datatype属性,结束标签保持</元素名>的纯净格式即可:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"> <xsl:output method="xml" version="1.0" encoding="utf-8" omit-xml-declaration="no" indent="yes"/> <xsl:template match="/"> <Envelops> <order> <id datatype="Number">3</id> </order> </Envelops> </xsl:template> </xsl:stylesheet>
动态生成XSLT时的注意事项
如果是通过代码动态拼接XSLT字符串,要做好两点:
- 生成元素开始标签时,将
datatype属性嵌入开始标签内,比如拼接成:<{元素名称} datatype="{数据类型值}"> - 生成结束标签时,仅输出
</{元素名称}>,不要附加任何属性相关内容
内容的提问来源于stack exchange,提问作者Utpal
相关产品推荐
相关产品推荐

