1

在我的 xml 架构中,我有一个名为 itemsetting 的标签:

    <xs:element name="itemsetting">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="key" use="required">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="questionscript"/>
                            <xs:enumeration value="timeframe"/>
                            <xs:enumeration value="textlabel"/>
                            <xs:enumeration value="textboxtype"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

我想做的是能够将 html 嵌入到问题脚本类型中。例如:

<itemsetting key="questionscript">this<html:b>is bold </html:b> </itemsetting>

我试图摆弄复杂/简单的时间,每次我最终得到一个无法解析的模式文件。指向正确方向的指针将非常有帮助。

4

2 回答 2

3

扩展迈克尔的答案,如下所示:

<xs:element name="itemsetting">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="key" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="questionscript"/>
          <xs:enumeration value="timeframe"/>
          <xs:enumeration value="textlabel"/>
          <xs:enumeration value="textboxtype"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:element>

应该可以工作 - 假设是与XML 中的前缀http://www.w3.org/1999/xhtml相对应的 HTML 命名空间。html

如果您有多个命名空间,或者您不想打扰命名空间检查,请使用

 . . . 
      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
 . . . 

请注意,这假定嵌入的 HTML 是格式良好的 XML,例如,如果它包含会使整个 XML 文件不可读的未闭合标签,那么就无法使用模式。

于 2012-09-12T22:19:00.987 回答
2

您的元素没有简单的内容:它包含子元素,这意味着它是复杂的内容(特别是<complexContent mixed="true">)。

如果您想在 HTML 命名空间中允许任何子元素,您可以通过使用单个通配符粒子定义内容模型来实现<xs:any namespace="..." minOccurs="0" maxOccurs="unbounded"/>

于 2012-09-11T23:20:12.060 回答