只允许通过XSD在XML元素中使用固定文本?

时间:2016-11-18 00:32:52

标签: xml xsd

我目前正在处理XSD文件,我正在尝试创建一个doc-copyright元素,该元素必须在开始标记和结束标记之间包含此文本:

"This feed and its format is copyright RET 2016"

元素必须是空元素。

我确实试过看W3C学校的例子,但我找不到我想要的东西。

到目前为止,我有......

<xs:element name="doc-copyright" value="This feed and its format is
copyright RET 2016"/>

1 个答案:

答案 0 :(得分:1)

您可以使用@fixed

<xs:element name="doc-copyright"
            fixed="This feed and its format is copyright RET 2016"/>

允许

<doc-copyright>This feed and its format is copyright RET 2016</doc-copyright>

<强>

<doc-copyright/>

但要请求在开始和结束标记之间必须包含特定文本的元素必须是空元素是没有意义的。

<强>更新

为了禁止空案例(<doc-copyright/>),您可能认为可以添加限制,

  <xs:element name="doc-copyright"
              fixed="This feed and its format is copyright RET 2016">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

但是,这不起作用,因为当@fixed为空时doc-copyright的值被视为默认值,并且此默认值符合minLength/@value="1"限制。

相反,您可以退回@fixed并简单地将所需文字作为唯一可能的枚举:

  <xs:element name="doc-copyright">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="This feed and its format is copyright RET 2016"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>