Cal*_*leb 4 xml xsd xml-namespaces
以下XML模式无法使用以下XML实例文档进行验证.有没有办法重写模式,以便实例文档在给定的约束内验证?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="sample-attribute" type="xs:string" />
<xs:element name="sample-element">
<xs:complexType>
<xs:attribute ref="sample-attribute" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<sample-element xmlns="http://tempuri.org/XMLSchema.xsd" sample-attribute="test" />
Run Code Online (Sandbox Code Playgroud)
是.
将(全局)xs:attribute元素包装在xs:attributeGroup元素中.
在xs:element元素中,请参阅xs:attributeGroup元素.
在name所述的属性xs:attributeGroup元素可以具有相同的值name的的属性xs:attribute元素.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attributeGroup name="sample-attribute">
<xs:attribute name="sample-attribute" type="xs:string" use="required"/>
</xs:attributeGroup>
<xs:element name="sample-element">
<xs:complexType>
<xs:attributeGroup ref="sample-attribute" />
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
这不是上述答案的扩展,也不是替代答案,只是您可能会发现有用的相关信息(它不在您的问题的约束范围内).
您可以保持原始模式不变,并在文档实例中明确限定(添加名称空间前缀)属性名称,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<t:sample-element
xmlns:t="http://tempuri.org/XMLSchema.xsd"
t:sample-attribute="test"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tempuri.org/XMLSchema.xsd sample.xsd"/>
Run Code Online (Sandbox Code Playgroud)
(注意t:根元素名称和属性名称上的名称空间前缀.)
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |