Как получить элементы <и> и <или> в 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)">
Удачи.