如何检查节点是否在xslt1.0中的错误/正确位置



我有一个XML文件:

<SAMPLE>
    <HEADER>
        <INV_ID>23</INV_ID>
        <PROCESS_CODE>00</PROCESS_CODE>
        <DATE>1234567</DATE>
        <TYPE>00</TYPE>
        <RULES>
            <ACTION>00</ACTION>
        </RULES>
    </HEADER>
</SAMPLE>

我只是想检查<TYPE>元素的下一个节点应该是<RULES>。如果不是,那么我只是想打印一个错误消息。例如,如果在TYPE元素后面有任何其他节点或元素,那么它就是一个错误。

请提出建议。我尝试了兄弟函数,但没有工作。

这将有助于知道你在哪里做这个测试。假设您希望将此作为第一件事,同时仍然位于最顶部,请尝试如下内容:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
    <xsl:choose>
        <xsl:when test="SAMPLE/HEADER/TYPE and not(SAMPLE/HEADER/TYPE[following-sibling::*[1][self::RULES]])">
            <error>error message</error>
        </xsl:when>
        <xsl:otherwise>
            <!-- continue -->
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>
</xsl:stylesheet>
如果 TYPE元素存在于SAMPLE/HEADER 中,且紧随其后的兄弟元素不是 RULES,则抛出错误

请注意,在设计良好的XML中,兄弟姐妹的顺序不应该很重要;只要RULES是TYPE的兄弟,接收方就应该能够处理它。

相关内容

  • 没有找到相关文章

最新更新