我们有一个奇怪的问题,我们正在使用几个XSLT文件转换一个相当复杂的XML文件,这不是问题。
问题在于,如果XML文件附加到模式,则转换不起作用,如果我们删除模式声明它开始工作正常。
有什么线索可以解决问题吗?
这是架构推断
<xs:schema id="play"
targetNamespace="highway"
elementFormDefault="qualified"
xmlns="highway"
xmlns:mstns="highway"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
我们只是使用以下代码链接它(Visual Studio Intellisense然后启动)
<helloElement name="hello" xmlns="highway">
我很欣赏这不是很多,不知道在症状方面提供什么,如果您需要任何信息,请告诉我。
非常感谢!
答案 0 :(得分:5)
问题不在于架构,问题是您的样式表需要考虑的名称空间声明xmlns="highway"
,例如
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hw="highway"
version="1.0">
<xsl:template match="hw:helloElement">
...
</xsl:template>
</xsl:stylesheet>
等等,您匹配的任何地方或选择您需要使用前缀的元素。
答案 1 :(得分:2)
添加架构声明时,您要在XML文档(xmlns="highway"
)中添加默认命名空间,而以前不存在。这将影响XSLT中元素引用和XPATH的解释,因为您的所有元素现在不再是<someElement>
,而是<highway:someElement>
。查看this link了解详情。