首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT 1.0如何在条件为真时生成空结果和/或中止转换

XSLT 1.0如何在条件为真时生成空结果和/或中止转换
EN

Stack Overflow用户
提问于 2019-01-16 18:01:32
回答 2查看 160关注 0票数 0

如果HeaderInformation/InvoiceType = CreditNote,我如何中止xslt转换?

XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<SALESINVOICE>
    <Interchange>
		<Recipient>1234</Recipient>
		<Sender>5678</Sender>
		<CreationDate>2019-01-11:09:16:43</CreationDate>
		<Test>No</Test>
		<Interchange_Control_Number>123584</Interchange_Control_Number>
		<HeaderInformation>
			<OrigInvoiceNumber>1</OrigInvoiceNumber>
			<InvoiceType>CreditNote</InvoiceType>
		</HeaderInformation>
	</Interchange>
</SALESINVOICE>

向Julian致以最好的问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-16 18:15:54

根据你所说的“中止”的意思:

您可以像这样使用<xsl:message>

代码语言:javascript
复制
<xsl:if test="HeaderInformation/InvoiceType='CreditNote'">
    <xsl:message terminate="yes"/>
</xsl:if>

这将终止,并显示一个错误。

如果你不想要一个错误,你也可以这样做:

代码语言:javascript
复制
<xsl:template match="/">
    <xsl:if test="SALESINVOICE[not(Interchange/HeaderInformation/InvoiceType='CreditNote')]">
        <!-- Here goes your XSLT code -->
        <xsl:apply-templates/>
    </xsl:if>
</xsl:template>

如果找到值为CreditNote<InvoiceType>,这将输出一个空文档。

票数 1
EN

Stack Overflow用户

发布于 2019-01-16 18:18:56

这里有一种方法(在许多方法中):

代码语言:javascript
复制
<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:apply-templates select="SALESINVOICE[not(Interchange/HeaderInformation/InvoiceType='CreditNote')]"/>
</xsl:template>

<xsl:template match="SALESINVOICE">
    <!-- instructions to process the invoice -->
</xsl:template>

</xsl:stylesheet>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54214565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档