带有HTML标记的XSD以及自定义xml

时间:2015-06-05 09:06:55

标签: xml xsd-validation xhtml-1.0-strict

我打算创建一个自定义XML格式,并使用XSD对其进行验证。因此,我想创建一个可以验证我的自定义XML的XSD,其中包含自定义元素可以包含任何有效的HTML标记,HTML标记可以包含我的自定义元素。

我的自定义xml示例。

 <?xml version="1.0" encoding="UTF-8"?>
    <root-custom-element type='card/text'>
    <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Avenir; color:            #010101">
    <span style="font-family: 'Avenir-Roman'; font-weight: normal; font-style: normal; font-size: 20.00pt">Hello

    Some text

    </span>
    </p>
    <resource-element type="image/jpeg" resource-id="lh6rdbf14a0e023724d918086d0b8d77152e7"></resource-element>
    <p>
    <span>
    test text
    </span>
    <span>
    fkgfiughs
    </span>
    </p>

    <p>
    <resource-element type="audio/x-aac" resource-id="lh6rdcf34bf0fc03849348a1875fe2e8d1192"></resource-element>
    </p>
    </root-custom-element>

我创建的测试架构

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import schemaLocation="custom-html.xsd"
        namespace="http://www.w3.org/1999/xhtml" />

    <xs:element name="root-custom-element" type="rootCustomElement" />

    <xs:element name="resource-element" type="resourceElement" />

    <xs:complexType name="resourceElement">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="resource-id" type="xs:string" use="required" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="rootCustomElement">
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="resource-element" />
                <xs:any namespace="xhtml:http://www.w3.org/1999/xhtml" processContents="strict" />
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="bgcolor" type="xs:string" />
        <xs:attribute name="type" type="xs:string" />
    </xs:complexType>
</xs:schema>

但是当我尝试针对模式验证xml时,我得到了错误

Exception: cvc-complex-type.2.4.a: Invalid content was found starting with element 'p'. One of '{resource-element, WC["http://www.w3.org/1999/xhtml"]}' is expected.

custom-html.xsd架构是xhtml-strict.xsd的修改版本,仅包含我需要的html标签。 'p'就是其中之一。

0 个答案:

没有答案