Xml 使用无名称空间的xsl处理xsd
我在使用xsl处理xsd时遇到问题。我的xsd文件开始于:Xml 使用无名称空间的xsl处理xsd,xml,xslt,xsd,schema,Xml,Xslt,Xsd,Schema,我在使用xsl处理xsd时遇到问题。我的xsd文件开始于: <schema targetNamespace="http://www.bleble.com" xmlns="http://www.w3.org/2001/XMLSchema"> <complexType name="blabla"> ... 不将其添加到标记: <complexType name="blabla"> 但它对xml标准无效 谢谢你的帮助 这是XPath和XSLT中最常见的问题,
<schema targetNamespace="http://www.bleble.com"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="blabla">
...
不将其添加到标记:
<complexType name="blabla">
但它对xml标准无效
谢谢你的帮助 这是XPath和XSLT中最常见的问题,搜索“XPath中的默认名称空间”,您会找到许多很好的解释 快速的答案是,要选择默认名称空间(其名称空间uri不是空字符串)中具有未固定名称的元素,您需要在XSLT代码中将前缀绑定到名称空间,并引用任何具有如此定义的前缀的未固定元素名 在这种情况下:
//complexType
不选择任何内容,因为XPath处理器正在查找名为complexType
的元素,该元素位于“无命名空间”中,但文档中的所有元素都位于中http://www.w3.org/2001/XMLSchema“
名称空间
您已经将前缀xsd
绑定到源XML文档的默认名称空间,然后使用:
//xsd:complexType
这是XPath和XSLT中最常见的FAQ——搜索“XPath中的默认名称空间”,您将找到许多很好的解释 快速的答案是,要选择默认名称空间(其名称空间uri不是空字符串)中具有未固定名称的元素,您需要在XSLT代码中将前缀绑定到名称空间,并引用任何具有如此定义的前缀的未固定元素名 在这种情况下:
//complexType
不选择任何内容,因为XPath处理器正在查找名为complexType
的元素,该元素位于“无命名空间”中,但文档中的所有元素都位于中http://www.w3.org/2001/XMLSchema“
名称空间
您已经将前缀xsd
绑定到源XML文档的默认名称空间,然后使用:
//xsd:complexType
你糊涂了
您会说:“所以没有名称空间可以通过xsl识别标记”。但是有一个名称空间——名称空间是。没有前缀,但前缀对XSLT并不重要;要编写XSLT处理代码,您只需要知道名称空间URI。例如,如果要匹配complexType元素,则需要编写
<xsl:template match="ajkt:complexType" xmlns:ajkt="http://www.w3.org/2001/XMLSchema"/>
当然,您通常会使用比ajkt(可能是xs或xsd)更容易识别的前缀,并且通常会将声明放在xsl:stylesheet元素上,但这只是表面现象。您感到困惑
您会说:“所以没有名称空间可以通过xsl识别标记”。但是有一个名称空间——名称空间是。没有前缀,但前缀对XSLT并不重要;要编写XSLT处理代码,您只需要知道名称空间URI。例如,如果要匹配complexType元素,则需要编写
<xsl:template match="ajkt:complexType" xmlns:ajkt="http://www.w3.org/2001/XMLSchema"/>
当然,您通常会使用比ajkt(可能是xs或xsd)更容易识别的前缀,并且通常会将声明放在xsl:stylesheet元素上,但这只是表面现象。您需要更清楚地了解您所做的尝试。您的意思是在XSL样式表中添加了xmlns:xsd名称空间前缀声明吗?你说的“不加标签”是什么意思。。。在XPath表达式中不使用名称空间前缀?“无效”是什么意思?请显示您认为无效的代码(在更多上下文中),并说明是什么让您认为它无效。您展示的名称空间前缀声明的格式肯定很好,并且不会使XSL样式表“无效”。此外,如果您区分“名称空间”和“名称空间前缀”以及“名称空间前缀声明”,而不是将它们全部称为“名称空间”,那么有关此主题的问题和答案将更容易理解。例如,当你说“没有名称空间”时,那是不对的。显然,您的意思是“没有名称空间前缀”。可能是您不熟悉名称空间声明的工作方式。我不怪你,但我会给你一个建议,在这个领域,花一个小时专门学习基础知识将使生活变得更加轻松,避免以后几个小时的挫折。你需要更清楚地了解你所做的尝试。您的意思是在XSL样式表中添加了xmlns:xsd名称空间前缀声明吗?你说的“不加标签”是什么意思。。。在XPath表达式中不使用名称空间前缀?“无效”是什么意思?请显示您认为无效的代码(在更多上下文中),并说明是什么让您认为它无效。您展示的名称空间前缀声明的格式肯定很好,并且不会使XSL样式表“无效”。此外,如果您区分“名称空间”和“名称空间前缀”以及“名称空间前缀声明”,而不是将它们全部称为“名称空间”,那么有关此主题的问题和答案将更容易理解。例如,当你说“没有名称空间”时,那是不对的。显然,您的意思是“没有名称空间前缀”。可能是您不熟悉名称空间声明的工作方式。我不怪你,但我会给你一个建议,这是一个专门研究基础知识的领域,一个小时的学习将使生活变得更加轻松,避免以后几个小时的挫折。是的!我明白了!太感谢你了!是的!我明白了!太感谢你了!