Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 架构属性在作用域属性声明中引发错误_Xml_Xslt_Xsd_Schema_Xslt 2.0 - Fatal编程技术网

Xml 架构属性在作用域属性声明中引发错误

Xml 架构属性在作用域属性声明中引发错误,xml,xslt,xsd,schema,xslt-2.0,Xml,Xslt,Xsd,Schema,Xslt 2.0,我正在使用XSLT2.0。我的XSL文件中有一个声明: <xsl:template match="schema-attribute(attr)"> <match>schema-attribute(attr):</match> </xsl:template> 架构属性(attr): 我正在尝试将schema属性与attr匹配。我的xml文档中有多个属性为attr的xml元素 xml文档: <?xml

我正在使用XSLT2.0。我的XSL文件中有一个声明:

   <xsl:template match="schema-attribute(attr)">
            <match>schema-attribute(attr):</match>
    </xsl:template>

架构属性(attr):
我正在尝试将schema属性与attr匹配。我的xml文档中有多个属性为attr的xml元素

xml文档:

<?xml version="1.0" encoding="UTF-8" ?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noschemaLocation="http://www.w3.org/2001/XMLSchema-instance">

  <e1>def</AAA>
  <e1 attr="1">there</AAA>
  <e1 attr="2">hey</AAA>
</test>
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0" >
<xsl:template match="schema-attribute(attr)">
            <match>matched</match>
    </xsl:template>

</xsl:stylesheet>

def
那里
嘿
模式

<?xml version="1.0" encoding="UTF-8" ?>

<x:schema xmlns:x="http://www.w3.org/2001/XMLSchema">

    <x:element name="test" />

    <x:element name="e1" type="etype" />
    <x:complexType name="etype">
            <x:simpleContent>
                <x:extension base="x:string">
                    <x:attribute name="attr" type="x:string" use="optional"></x:attribute>
                </x:extension>
            </x:simpleContent>
    </x:complexType>

xsl:

<?xml version="1.0" encoding="UTF-8" ?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noschemaLocation="http://www.w3.org/2001/XMLSchema-instance">

  <e1>def</AAA>
  <e1 attr="1">there</AAA>
  <e1 attr="2">hey</AAA>
</test>
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0" >
<xsl:template match="schema-attribute(attr)">
            <match>matched</match>
    </xsl:template>

</xsl:stylesheet>

匹配
我得到以下错误:

序列类型表达式引用范围内属性声明中未定义的架构属性“attr”

我不知道为什么会有这样的错误,这意味着什么。我试图用谷歌搜索,但没有找到解决办法。同样,attr也是xml中的一个属性

  • 在这个特定的上下文中,范围内属性声明意味着什么
  • 另外,如何使用上面的xml文件使用schema属性

如果我能尝试一个比Michael Sperberg McQueen更简短的回答:schema-attribute()测试很少有用。它们只匹配已根据模式中的全局(顶级)属性声明进行验证的属性,很少有模式实际使用全局属性声明。与您一样,大多数都在本地声明中定义属性

错误消息表示您的架构没有名为“attr”的全局属性声明


您会问:“另外,如何使用上面的xml文件使用schema-attribute()。这不是一个好问题。schema-attribute()可以解决的问题很少。我怀疑你的问题不在其中。告诉我们你想做什么,我们可以告诉你如何着手解决它。选择与问题匹配的工具,而不是与工具匹配的问题。

如果我可以尝试比Michael Sperberg McQueen更简短的回答:schema-attribute()测试很少有用。它们只匹配已根据模式中的全局(顶级)属性声明进行验证的属性,很少有模式实际使用全局属性声明。与您一样,大多数都在本地声明中定义属性

错误消息表示您的架构没有名为“attr”的全局属性声明


您会问:“另外,如何使用上面的xml文件使用schema-attribute()。这不是一个好问题。schema-attribute()可以解决的问题很少。我怀疑你的问题不在其中。告诉我们你想做什么,我们可以告诉你如何着手解决它。选择与问题匹配的工具,而不是与工具匹配的问题。

如果我可以尝试比Michael Sperberg McQueen更简短的回答:schema-attribute()测试很少有用。它们只匹配已根据模式中的全局(顶级)属性声明进行验证的属性,很少有模式实际使用全局属性声明。与您一样,大多数都在本地声明中定义属性

错误消息表示您的架构没有名为“attr”的全局属性声明


您会问:“另外,如何使用上面的xml文件使用schema-attribute()。这不是一个好问题。schema-attribute()可以解决的问题很少。我怀疑你的问题不在其中。告诉我们你想做什么,我们可以告诉你如何着手解决它。选择与问题匹配的工具,而不是与工具匹配的问题。

如果我可以尝试比Michael Sperberg McQueen更简短的回答:schema-attribute()测试很少有用。它们只匹配已根据模式中的全局(顶级)属性声明进行验证的属性,很少有模式实际使用全局属性声明。与您一样,大多数都在本地声明中定义属性

错误消息表示您的架构没有名为“attr”的全局属性声明


您会问:“另外,如何使用上面的xml文件使用schema-attribute()。这不是一个好问题。schema-attribute()可以解决的问题很少。我怀疑你的问题不在其中。告诉我们你想做什么,我们可以告诉你如何着手解决它。选择与问题匹配的工具,而不是与工具匹配的问题。

您的xml仍然毫无意义。
xsi:schemaLocation
应该是名称空间/模式对的序列。由于您的文档不使用名称空间,您可能希望使用
xsi:noNamespaceSchemaLocation
。好的,我做了这些更改。但是如何将schema属性用于这个xml文档呢?您只是想知道如何匹配
attr
属性吗?如果是这样,模板的匹配表达式将是
。您的xml仍然没有意义。
xsi:schemaLocation
应该是名称空间/模式对的序列。由于您的文档不使用名称空间,您可能希望使用
xsi:noNamespaceSchemaLocation
。好的,我做了这些更改。但是如何将schema属性用于这个xml文档呢?您只是想知道如何匹配
attr
属性吗?如果是这样,模板的匹配表达式将是
。您的xml仍然没有意义。
xsi:schemaLocation
应该是名称空间/模式对的序列。由于您的文档不使用名称空间,您可能希望使用
xsi:noNamespaceSchemaLocation
。好的,我做了这些更改。但是如何将schema属性用于这个xml文档呢?您只是想知道如何匹配
attr
属性吗?如果是这样,模板的匹配表达式将是
。您的xml仍然没有意义。
xsi:schemaLocation
应该是名称空间/模式对的序列。因为你的文件没有