Частичная валидация xml

pitrik2

возникла задача провалидировать xml-файл
пытаюсь выбрать чем валидировать
DTD - слишком примитивно, нет например проверки типов
Schema - слишком избыточный синтаксис, есть гуй например в эклипсе, но как-то не хочется от гуя зависеть
RelaxNG - выглядит гораздо красивше схемы
но вот возник вопрос
я не хочу валидировать весь xml
хочу только верхушку
но как такое сделать?
тоесть нужно правило что внутри такого-то тега может быть всё что угодно любой вложенности - типа эту ветку "опустить" при валидации

okis

ужно правило что внутри такого-то тега может быть всё что угодно любой вложенности - типа эту ветку "опустить" при валидации
удали xslt лишнее

pitrik2

удали xslt лишнее
не понял
предлагаешь сначала xml сконвертировать в другой xml а потом его валидировать?

okis

ну да, если исходить из того, что xml в принципе валидный

yroslavasako

scala: pattern matching

maxvyar

но вот возник вопрос
я не хочу валидировать весь xml
хочу только верхушку
но как такое сделать?
тоесть нужно правило что внутри такого-то тега может быть всё что угодно любой вложенности - типа эту ветку "опустить" при валидации

<xsd:element name="bla-bla">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any" processContents="skip" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

ermsoft

На RelaxNG:
$ cat anyElement.rng 
<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<ref name="anyElement"/>
</start>
<define name="anyElement">
<element>
<anyName/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="anyElement"/>
</choice>
</zeroOrMore>
</element>
</define>
</grammar>

А потом соответственно для любой ветки, которую надо пропустить, пишешь <externalRef href="anyElement.rng"/>.
Оставить комментарий
Имя или ник:
Комментарий: