我需要修改xsd模式以执行特定的xquery

问题描述 投票:0回答:1

我需要修改sn xsd模式,以便我可以执行特定的xquery查找类型名称

我已经尝试过使用命名空间,但是我做对了。

这是xsd模式:

<xs:group name="Axiom" >
    <xs:choice >

        <xs:element ref="el-typed:equivalent"/>
        <xs:element ref="el-typed:subsumes"/>
        <xs:element ref="el-typed:instance-of"/>
        <xs:element ref="el-typed:related-to"/>
    </xs:choice>

</xs:group>




<xs:element name="equivalent">

    <xs:complexType>

        <xs:sequence >
            <xs:group  minOccurs="2" maxOccurs="unbounded" ref="el-typed:ClassExpression"/>
        </xs:sequence>

    </xs:complexType>

</xs:element>

<xs:element name="subsumes">
    <xs:complexType>
        <xs:sequence>
            <xs:group minOccurs="2" maxOccurs="2" ref="el-typed:ClassExpression"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="instance-of">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="el-typed:constant"/>
            <xs:group ref="el-typed:ClassExpression"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="related-to">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="el-typed:constant"/>
            <xs:element ref="el-typed:constant"/>
        </xs:sequence>
        <xs:attribute name="prop" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
</xs:element>

这是xquery:(验证{doc(“ el1.xml”)})// element(*,Axiom)

当在对模式有效的格式良好的xml上使用时,应返回所有类型的公理,这些公理是以下元素:等价,包含,实例化,相关于。目前,Oxygen对xquery表示以下说法:未知类型名称Q {http://www.cs.manchester.ac.uk/pgt/COMP60411/el}公理

xml xsd xquery
1个回答
0
投票

除非您在查询中由“导入模式”声明引用的模式中声明了类型名称“ Axiom”,否则不能使用类型名称“ Axiom”,或以某种等效的方式(由供应商定义)将查询处理器所知道的方式。错误消息告诉我,查询处理器尚未了解该架构,而不是您需要修改该架构。

此外:引用Q {http://www.cs.manchester.ac.uk/pgt/COMP60411/el} Axiom的错误消息表明必须在某处声明一个默认名称空间。您没有向我们展示任何声明该名称空间的内容;实际上,您似乎已经仔细地修剪了从架构或查询中声明名称空间的内容。由于您的问题表明您怀疑与名称空间有关的问题,因此这似乎毫无帮助。

© www.soinside.com 2019 - 2024. All rights reserved.