繁体   English   中英

XSD; 如何混合复杂和简单的内容?

[英]XSD; How to mix up complex and simple content?

我有多个XML文件,它们可以在最低级别包含HTML bi Tag和或文本,如以下示例所示。

<root>
  <text>    Hallo Welt, wie geht es so?                             </text>

  <text>    <i>Hallo Welt, wie geht es so?</i>                      </text>
  <text>    Hallo <i>Welt, wie geht es so?</i>                      </text>

  <text>    <b>Hallo Welt, wie geht es so?</b>                      </text>
  <text>    Hallo <b>Welt, wie geht es so?</b>                      </text>

  <text>    <b>Hallo Welt</b>, <i>wie geht es so?</i>               </text>
  <text>    <b>Hallo Welt</b>, <i>wie geht es so</i>?               </text>

  <text>    <i>Hallo Welt</i>, <b>wie geht es so?</b>               </text>
  <text>    <i>Hallo Welt</i>, <b>wie geht es so</b>?               </text>

  <text>    <i>Hallo Welt, <b>wie geht es so</b>?</i>               </text>
  <text>    <b>Hallo Welt, <i>wie geht es so</i>?</b>               </text>

  <text>    Hallo <i>Welt, <b>wie geht es so</b>?</i>               </text>
  <text>    Hallo <b>Welt, <i>wie geht es so</i>?</b>               </text>

  <text>    <b>Hallo <i>Welt</i></b>, <i>wie <b>geht </b></i>es so? </text>
</root>

您可以将ib混合使用,反之,您可以仅在bi标签之一中添加文字或其他文字。

我尝试了以下方法:

<xs:complexType name="articleType">
    <xs:sequence>
        <xs:element name="author"       type="textType" />
        <xs:element name="title"        type="textType" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:string" use="required" />      
</xs:complexType>

<!-- TEXT -->
<xs:complexType name="textType">
    <xs:sequence>
        <xs:element name="i"    type="iType"    minOccurs="0" maxOccurs="unbounded" />
        <xs:element name="b"    type="bType"    minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>

<!-- I -->
<xs:complexType name="iType">
    <xs:sequence>
        <xs:element name="b"    type="bType"    minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>

<!-- B -->
<xs:complexType name="bType">
    <xs:sequence>
        <xs:element name="i"    type="iType"    minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>

遗憾的是,此验证站点http://www.utilities-online.info/xsdvalidation/告诉我以下错误:

错误-第7行,第50行:org.xml.sax.SAXParseException; lineNumber:7; columnNumber:50; cvc-complex-type.2.3:元素“作者”不能有字符[children],因为类型的内容类型是仅元素的。

亲切的问候

马里奥

XML Schema通过声明带有mixed="true"complexType为混合内容提供了有限的支持,但是您不能进一步将文本节点限制在具有类型的混合内容中。 您只能将简单类型应用于简单内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM