Как получить элементы <и> и <или> в XPath с помощью процессора Jre по умолчанию (JAXPSAXProcessor)

Я работаю с некоторыми XML-файлами, которые содержат и / или теги. Я хочу преобразовать их в HTML. В моем XSL я использую два шаблона

<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, я получаю ошибки: ERROR [main] JAXPSAXProcessorInvoker - Синтаксическая ошибка в 'или'. ОШИБКА [main] JAXPSAXProcessorInvoker - Синтаксическая ошибка в 'и'.

Я предполагаю, что JaxPSaxProcessor переводит и / или операторы в Xpath. здесь вы можете увидеть список операторов. Я не могу изменить процессор jaxb, потому что он использовался во многих местах. Есть ли другие способы решения проблемы?

1 ответ

Решение

Если процессор XSLT содержит ошибки, вы можете попытаться обмануть его, используя ряд методов, таких как:

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

или же

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

Удачи.

Другие вопросы по тегам