导致XQuery错误的XML架构:简单类型元素不支持“text()”
BAII编写了以下XML模式部分:导致XQuery错误的XML架构:简单类型元素不支持“text()”,xml,xsd,xquery-sql,Xml,Xsd,Xquery Sql,BAII编写了以下XML模式部分: <xs:schema> ... <xs:element name="Fields" minOccurs="1" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Field" minOccurs="3" maxOccurs="unbounded"> <xs:complexType
<xs:schema>
...
<xs:element name="Fields" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Field" minOccurs="3" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="title" type="xs:string"/>
<xs:attribute name="seq" type="xs:int" default="0" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
...
</schema>
我在堆栈溢出上找到了答案
我很难弄清楚如何处理具有属性而没有元素的字段元素。我错误地认为唯一要做的就是将内容标记为simpleContent或complexContent。唯一需要做的是将mixed属性添加到complexType标记并将其设置为true。我将上述模式部分更改如下:
<xs:schema>
...
<xs:element name="Fields" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Field" minOccurs="3" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:attribute name="title" type="xs:string" default="Unknown" />
<xs:attribute name="seq" type="xs:int" default="0" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
...
</schema>
我现在可以在XQuery中访问Field元素的文本内容
<xs:schema>
...
<xs:element name="Fields" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Field" minOccurs="3" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:attribute name="title" type="xs:string" default="Unknown" />
<xs:attribute name="seq" type="xs:int" default="0" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
...
</schema>