XML Schema:从字符串中排除HTML实体和控制字符

时间:2018-03-07 12:53:33

标签: xml xsd html-entities control-characters

是否有XSD数据类型从XML实例中的字符串中排除HTML实体和其他控制字符?

1 个答案:

答案 0 :(得分:1)

不,没有内置的XSD数据类型可以排除HTML字符实体或控制字符,但是你可能不需要一个,因为XML的良构法则 已经排除了< / EM>

  1. 文档中未定义但未定义的字符实体 predefined

    <!ENTITY lt     "&#38;#60;">
    <!ENTITY gt     "&#62;">
    <!ENTITY amp    "&#38;#38;">
    <!ENTITY apos   "&#39;">
    <!ENTITY quot   "&#34;">
    
  2. 代理块,FFEE和FFFF中的
  3. Unicode characters,这些产品不允许这样做:

    Char::= #x9 | #xA | #xD | [#x20-#xD7FF]|[#xE000-#xFFFD]|[#x10000-#x10FFFF]
    
  4. 如果您仍希望排除其他字符,可以定义一种限制xs:string的类型,例如,排除Unicode general category 其他类别,这将排除所有以下类别:

    C Other   Cc | Cf | Cs | Co | Cn
    Cc    Control a C0 or C1 control code
    Cf    Format  a format control character
    Cs    Surrogate   a surrogate code point
    Co    Private_Use a private-use character
    Cn    Unassigned  a reserved unassigned code point or a noncharacter
    

    通过此XSD类型:

    <xs:simpleType name="NoUnicodeOtherCodePointsString">
      <xs:restriction base="xs:string">
        <xs:pattern value="[\P{C}]*"/>
      </xs:restriction>
    </xs:simpleType>