抱歉我的英文。
我需要为我的XML文件编写XML模式。我的XML文件示例:
<?xml version="1.0" encoding="utf-8"?>
<styles>
<style name="p">
<text-indent>25px</text-indent>
</style>
<style name="td">
<border>solid 2px</border>
<border-color>Black</border-color>
<padding-left>5px</padding-left>
</style>
<style name="p.withoutRedLine">
<text-indent>0px</text-indent>
</style>
</styles>
每个'style'元素都可以包含任何名称的项目。
我编写了下一个XML模式(问题在代码注释中定义):
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
xmlns="http://www.mia-orbis.com/2012/XMLSchema/styles"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="style">
<xsd:sequence minOccurs="1" maxOccurs="1">
<!--Error in it place (I don't need to specify value
of attribute 'name', but from me it demand):-->
<xsd:element type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:ID" use="required"/>
</xsd:complexType>
<xsd:element name="styles">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="style" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
此致
答案 0 :(得分:0)
您需要使用xsd:any:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="style">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:ID" use="required"/>
</xsd:complexType>
<xsd:element name="styles">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="style" minOccurs="0" maxOccurs="unbounded" type="style"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我对您的架构做了一些修复:删除了默认命名空间,将类型设置为样式元素等。
如果您同意使用xsd:any,那么定义您所知道的内容可能是一种很好的做法,并将xsd:any留给其他任何内容。