Как вызвать ошибку внутри шаблона XLST1.0? - PullRequest
0 голосов
/ 06 июня 2018

Поскольку я не мог найти что-либо в сети (даже здесь, при переполнении стека), я надеюсь, что вы могли бы помочь мне выяснить, как вызвать исключение во время выполнения XSL-преобразования.Он работает внутри Oracle Service Bus 11, поэтому у нас есть только функции XLST1.0: (

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="//DATA">
        <parsed>
            <xsl:for-each select="ITEM">
                <xsl:choose>
                    <xsl:when test="COND = 'X'">
                        <xsl:text>disabled</xsl:text>
                    </xsl:when>
                    <xsl:when test="COND = ''">
                        <xsl:text>running</xsl:text>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:text>HERE SHOULD AN ERROR BE RAISED!</xsl:text>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:for-each>
        </parsed>
    </xsl:template>

</xsl:stylesheet>

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете использовать очень удобный xsl: message с атрибутом terminate="yes|no".В вашем случае вы можете реализовать его следующим образом:

<xsl:template match="//DATA">
    <parsed>
        <xsl:for-each select="ITEM">
            <xsl:choose>
                <xsl:when test="COND = 'X'">
                    <xsl:text>disabled</xsl:text>
                </xsl:when>
                <xsl:when test="COND = ''">
                    <xsl:text>running</xsl:text>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:message terminate="yes">HERE SHOULD AN ERROR BE RAISED!</xsl:message>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </parsed>
</xsl:template>

Я рекомендую взглянуть на вышеуказанную документацию, так как некоторые отличные способы использования xsl:messageочерчены.

...