Разрешить определенные теги XHTML в схеме XML? - PullRequest
0 голосов
/ 21 февраля 2012

Я разрабатываю схему XML для моего сайта. Один из элементов схемы называется «комментарии», который должен содержать комментарии пользователей. Я не хочу позволять использовать некоторые теги xhtml: b , i и u для стилизации. До сих пор я импортировал пространство имен XHTML, а затем объявил complexType для моего элемента комментариев:

<import namespace="http://www.w3.org/1999/xhtml"
        schemaLocation="xhtml1-transitional.xsd" />

....

<element name="comments">
    <complexType mixed="true">
        <any minOccurs="0">
            <element ref="xhtml:u"/>
            <element ref="xhtml:b"/>
            <element ref="xhtml:i"/>
        </any>
    </complexType>
</element>

Но, похоже, это не работает! По крайней мере, схема XML не будет проверяться с помощью средства проверки качества схемы IBM XML. Файл xhtml1-transitional.xsd находится в той же папке, что и схема XML.

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

У вас есть синтаксическая ошибка; <любой /> не может иметь контент. Возможно, вам придется использовать вместо этого (скорее всего) повторяющийся выбор.

1 голос
/ 21 февраля 2012

Самый простой способ - использовать секцию <[CDATA[ ... ]]> для комментариев.Я думаю, что вы проверяете теги в коде своего приложения, поэтому вам не нужно снова вводить проверку в XSD.

Редактировать:

Поскольку вы хотите только решение XSD, я думаю,самый простой способ - определить тег комментариев как строку и избежать специальных символов html:

<xsd:element name="comments" type="xsd:string" />

Я не думаю, что было бы хорошим способом включить фактические теги какXML в схеме, поскольку это просто произвольный контент (что с допустимым HTML, который является недействительным XML? Например, <p> без </p> является допустимым HTML, но недействительным в XML).

Специальный XMLсимволы для побега

" & ' < >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...