Проверка типа XSLT - PullRequest
       14

Проверка типа XSLT

1 голос
/ 12 мая 2010

Можно ли проверить элементы ComplexType?

У меня есть это (упрощенно):

complexType Record
complexType Customer extension of Record
complexType Person extension of Record 

<xsl:template match="/">
    <records>
    <xsl:apply-templates /> 
    </records>
</xsl:template>

<xsl:template match="!!! TYPECHECK FOR RECORD !!!" name="Record">
   <record><xsl:value-of select="." /></record>
</xsl:template>

можно ли проверить тип элементов вкл. Наследование

Я не знаю названия элементов только потому, что они являются подтипом Записи.

schema 1:
   complexType name="Customer"
      extension base="Record"

   element name="customers"
      element name="customer" type="Customer"

schema 2:
   complexType name="Person"
      extension base="Record"

   element name="persons"
      element name="person" type="Person"

schema ?:
   complexType name="UnknownType"
      extension base="Record"

   element name="unknowns"
      element name="unknown" type="UnknownType"

xml 1:
<customers>
   <customer />
   <customer />
</customers>

xml 2:
<persons>
   <person />
   <person />
</persons>

xml ?:
<?s>
   <? />
   <? />
</?s>

xml input is custom, поэтому я должен соответствовать типу (я думаю)

Ответы [ 2 ]

1 голос
/ 12 мая 2010

В XPath 2.0 (а это означает XSLT 2.0) можно использовать оператор instance-of :

. instance-of element(*, my:Record)

0 голосов
/ 12 мая 2010

Я не уверен, что вы имеете в виду.

Разные типы имеют разные имена тегов, и в xslt вы должны взглянуть на них, чтобы решить, какой тип является узлом.

Убедиться, что узел действительно имеет структуру, предписанную вашей логикой, не является задачей xslt. Вы должны проверить документ по схеме, прежде чем передавать его процессору xslt, чтобы добиться этого.

EDIT

Я все еще не уверен, но, похоже, мой вопрос мог бы помочь.

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