我有这个XSLT文档:
<xsl:stylesheet version="1.0" xmlns:mstns="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/MyDocRootElement">
<xs:schema id="DataSet" targetNamespace="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" >
<xs:element name="DataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Somename"> </xs:element>
<xs:element name="OtherName">
</xs:element>
<!-- FOR EACH NOT SUPPORTED? -->
<xsl:for-each select="OtherElements/SubElement">
<xs:element name="OtherName">
</xs:element>
</xsl:for-each>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
</xsl:template>
</xsl:stylesheet>
我有一个验证错误,指出“在此上下文中不支持for-each元素”
我猜它与xs名称空间验证有关。
关于如何使这项工作的任何想法? (排除验证?)
由于 亚历
答案 0 :(得分:0)
我认为这是一个IDE错误。
XSLT有效,编译正常。
答案 1 :(得分:0)
<强>更新强>:
提交问题的@alexbf在评论中声明他没有执行任何验证,错误是使用XslCompiledTransform(.NET)运行转换的结果。
我已经验证样式表在没有任何问题的情况下编译和执行XslCompiledTransform - 在VS2008和使用nxslt.exe命令行实用程序。
错误的原因在于未显示的代码 - 准备并启动转换的代码。
验证 XSLT样式表很少(如果有的话)!
毕竟,XSLT处理器更好地完成了这项任务 - 执行额外的语义验证,这些验证并不总是在XSL架构中用XSLT表示。
第二个问题是您使用不是针对XSLT的架构验证XSLT样式表,而是针对其他文档类型...
推荐:永远不要尝试验证您的XSLT样式表。验证对您的自定义文档类型有意义,例如XSLT处理中涉及的源XML文档或此XSLT处理的结果文档。
答案 2 :(得分:0)
更新:
问题与XSLT中的其他内容有关。为了这篇文章,我已经删除了XSLT,但我意识到问题确实存在于我删除的部分中。错误消息具有误导性。
它与&lt; xsl:comment&gt;相关我用来保存临时XSLT代码的元素。
我删除了整个&lt; xsl:comment&gt;部分,它现在完美地运作
对不起,感谢您的帮助。