我想定义一个带有一些限制文本和一个属性
的元素<some_element my_attr="data">some restricted text</some_element>
如何创建这样的元素?
我试过了:
<complexType>
<simpleContent>
<restriction base="string">
<pattern value="AAA"></pattern>
<attribute name="newattr" type="string"></attribute>
</restriction>
</simpleContent>
</complexType>
但是错误 msg:
复杂类型定义表示形式'#AnonType_childparent'的错误。何时使用,基地 type必须是一个complexType,其内容类型很简单,或者,只有在指定了restriction的情况下,才是具有混合内容的复杂类型 可填充粒子,或者,仅当指定了扩展名时,才是简单类型。 'string'不满足这些条件。
然后尝试了类似的东西
<complexType>
<complexContent>
<extension base="string">
<attribute name="attr" type="string"></attribute>
</extension>
</complexContent>
</complexType>
这次错误是(这次我没有添加任何限制;这仅用于测试目的):
复杂类型定义表示类型的错误 '#AnonType_childparent'。何时使用,基地 type必须是complexType。 'string'是一个simpleType。
我没有清楚错误意味着什么?是否有更好的错误文本解释?
答案 0 :(得分:4)
您的问题或多或少与此问题重复(仅answered)。
用这些术语思考:
This post显示了上述解释的端到端示例。对于您的特定情况:
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="tSomeRestrictedText">
<xsd:restriction base="xsd:string">
<xsd:pattern value="AAA"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="some_element">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="tSomeRestrictedText">
<xsd:attribute name="my_attr" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>