0
我在XSD keyref驗證中遇到了一些麻煩,應該可以輕鬆運行。 這裏是我的XML:找不到身份約束的XSD Validaton keyref值
<Configuration>
<Dependencies>
<Dependency name="python"></Dependency>
</Dependencies>
<Plugins>
<Plugin>
<Dependencies>
<Dependency name="python"></Dependency>
</Dependencies>
</Plugin>
</Plugins>
</Configuration>
現在我的模式(請未在配置元素的key.keyref對):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="Dependencies" type="DependenciesType"></xs:element>
<xs:element name="Plugins">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="Plugin" type="PluginType" minOccurs="1" maxOccurs="unbounded"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="kDependency">
<xs:selector xpath="./Dependencies/Dependency"></xs:selector>
<xs:field xpath="@name"></xs:field>
</xs:key>
<xs:keyref name="krPluginDependency" refer="kDependency">
<xs:selector xpath="./Plugins/Plugin/Dependencies/Dependency"></xs:selector>
<xs:field xpath="@name"></xs:field>
</xs:keyref>
</xs:element>
<!-- Now the Dependencies types -->
<xs:complexType name="DependenciesType">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Dependency" type="DependencyType"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DependencyType">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<!-- And the plugin type -->
<xs:complexType name="PluginType">
<xs:sequence>
<xs:element name="Dependencies" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="Dependency" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
插件的依賴名稱必須參考配置的依賴關係的名字。我跟着這裏的教程來檢查我是不是傻瓜(http://zvon.org/xxl/XMLSchemaTutorial/Output/ser_keys_st5.html)。我檢查了我的XPath表達式,它們很好(https://www.freeformatter.com/xpath-tester.html)。
當我嘗試驗證我的XML文件:
重點「krPluginDependency」,值爲「蟒蛇」沒有發現元素的標識約束「配置」。
我不知道問題在哪裏。
我試圖重現這個問題,但是您的XML文件在oXygen 19中對模式進行了很好的驗證。您可能想要添加有關在發生錯誤時使用的工具/解析器的詳細信息。 –
我在網上使用了驗證器(https://www.freeformatter.com/xml-validator-xsd.html)或者這個(http://www.utilities-online.info/xsdvalidation/),但現在你提到它可以成爲使用的工具,一些在線工具由JAXB引擎驅動,它並不真正支持一些keyrefs案例。我將嘗試在Python中使用lxml。 – CloudCompany