XSLT类型检查

时间:2010-05-12 09:32:47

标签: xslt casting

是否可以检查元素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>

是否可以检查elementstype incl。传承?

我不知道元素名称只是它们是Record的子类型。

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输入是自定义的,所以我必须匹配类型(我认为)

2 个答案:

答案 0 :(得分:1)

在XPath 2.0中(这意味着XSLT 2.0)可以使用instance-of运算符

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

答案 1 :(得分:0)

我不确定你的意思。

不同的类型具有不同的标记名称,在xslt中,您应该查看那些以确定节点的类型。

确保节点确实具有逻辑规定的结构不是xslt任务。您应该在将模式传递给xslt处理器之前根据模式验证文档以实现此目的。

修改

我仍然不确定,但似乎我的this question可能会有所帮助。