2010-04-13 2 views
3

Я не думаю, что это возможно, но я думал, что выброшу его там. Учитывая этот XML:Использование XSD для проверки количества узлов

<people count="3"> 
     <person>Bill</person> 
     <person>Joe</person> 
     <person>Susan</person> 
</people> 

Можно ли в XSD, чтобы заставить @count значение атрибута быть правильное количество определенных элементов (в данном случае, лицо, элемент)? В приведенном выше примере, очевидно, будет правильным и ниже пример не будет проверять:

<people count="5"> 
     <person>Bill</person> 
     <person>Joe</person> 
     <person>Susan</person> 
</people> 

ответ

4

Я уверен, XSD не может сделать это. Однако, если вы хотите, чтобы гарантировать, что ваш атрибут подсчета является реальным подсчет элементов ниже, работает таблицы стилей XSLT на документ может гарантировать, что это правда, установив значение:

<xsl:template match="people"> 
    <xsl:attribute name="count"> 
     <xsl:value-of select="count(person)"/> 
    </xsl:attibute> 
    <xsl:apply-templates/> 
</xsl:template> 

<!-- insert your identity template here --> 
0

парсеры реализующий XSD Спецификация 1.1 должна обеспечивать assert, которая может использоваться для проверки содержимого XML в отношении количества дочерних узлов

Смежные вопросы