Запретить имя элемента во всем XML-документе, используя XSD - PullRequest
0 голосов
/ 05 декабря 2018

Я использую XSD-файлы для проверки некоторых XML-файлов.Одно из правил заключается в том, что ни один сценарий не разрешен в XML или, в частности, в данном случае в документе HTML.Я считаю, что нам нужно указать в файле XSD, что тег name = "script" не допускается во всем документе.Как можно достичь этого контроля?

Как новичок в мире XSD, я попробовал

      <xs:element name="script" maxOccurs="0"/>

, но, видимо, это не сработало.

1 Ответ

0 голосов
/ 05 декабря 2018

XSD 1.0

Вы не можете напрямую выразить ограничение на то, что в документе не может быть элемента script, но вы можете опустить script и не допустить его: просто не используйте его в любоммодели содержимого любых элементов, и не используйте xsd:any с lax или skip для @processContents.

XSD 1.1

В XSD 1.1 вы можете использовать xsd:assert для дальнейшего ограничения xsd:any[@processContents='strict'] (где угодно xsd:any или даже для всего содержимого корневого элемента):

<xs:assert test="every $e in .//* satisfies $e[not(self::script)]"/>
...