2011-01-25 57 views
1

我正在处理一些包含和/或标记的xml文件。我想将它们转换为 html。在我的XSL我使用两个模板如何在XPath中使用Jre default处理器获取元素<and>和<or>处理器(JAXPSAXProcessor)

<xsl:template match="and"> 
    (
    <xsl:apply-templates select="./*[1]" /> 
    <xsl:text> </xsl:text> 
    <xsl:value-of select="name(.)" /> 
    <xsl:text> </xsl:text> 
    <xsl:apply-templates select="./*[2]" /> 
    ) 
</xsl:template> 
<xsl:template match="or"> 
    (
    <xsl:apply-templates select="./*[1]" /> 
    <xsl:text> </xsl:text> 
    <xsl:value-of select="name(.)" /> 
    <xsl:text> </xsl:text> 
    <xsl:apply-templates select="./*[2]" /> 
    ) 
</xsl:template> 

当我使用的Xalan作为处理器它工作的,但是当我使用JAXPSAXProcessor我得到错误: 错误[主] JAXPSAXProcessorInvoker - 语法错误“或”。 错误[main] JAXPSAXProcessorInvoker - '和'中的语法错误。

我想JaxPSaxProcessor转换和/或运算符在Xpath中。 here you can see the list of operators 我无法更改jaxb处理器,因为它已在许多地方使用。有没有其他的解决办法可以解决这个问题?

+0

好问题,+1。看到我的答案,你可以尝试一些技巧。 – 2011-01-25 14:12:23

回答

1

如果XSLT处理器越野车,您可以尝试使用一些技术,如欺骗它:

<xsl:template match="*[name()=concat('a', 'nd')"> 

<xsl:template match="*[name()=substring('land',2)"> 

好运。

+0

+1好答案。我认为即使`* [name()='和']`应该避免在错误的XPath解析器中发生冲突。 – 2011-01-25 15:12:54