Xml xslt仅在条件为true时复制元素和值
下面是我的xml:Xml xslt仅在条件为true时复制元素和值,xml,xslt,Xml,Xslt,下面是我的xml: <Orderdetails> <OrderPlace>CDGV</OrderPlace> <OrderID>1234</OrderID> <OrderStatus>Active<OrderStatus> </Orderdetails> CDGV 1234 活跃的 下面是我的XSLT: <xsl:stylesheet version="1.0" xml
<Orderdetails>
<OrderPlace>CDGV</OrderPlace>
<OrderID>1234</OrderID>
<OrderStatus>Active<OrderStatus>
</Orderdetails>
CDGV
1234
活跃的
下面是我的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test = "OrderStatus=Active">
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:otherwise>
Order Status Inactive
</xsl:otherwise>
</xsl:choose>
<xsl:copy-of select="*" />
</xsl:template>
</xsl:stylesheet>
订单状态未激活
我只想在输入xml中的值为“Active”时复制所有元素和值,否则它应该显示“Order status as Inactive”。您能告诉我在XSLT中应该在哪里进行更改吗
我只想在输入xml中的值为“Active”时复制所有元素和值,否则它应该显示“Order status as Inactive”
这很容易通过以下方式实现:
XSLT1.0
<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="Orderdetails">
<xsl:choose>
<xsl:when test="OrderStatus='Active'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>Order Status Inactive</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
订单状态未激活
但是,这有一个缺陷:当测试为真时,结果将是源XML文档的副本;如果为false,则结果将是一个字符串
还要注意,这假设只有一个
Orderdetails
元素。第一件事是在您的测试中=“您指的是订单状态,但节点的名称是OrderStatus。还要将您的预期输出添加到问题中,对于一些简单的问题,您的XSLT似乎相当复杂。我已经将您的问题回滚到我回答它时的情况。如果有必要,用你的新问题问一个新问题。这是我的实际要求。应该在哪里对XSLT进行更改以使其正常工作?看看这是否有帮助:如果没有,请针对您的新问题提出一个新问题。我无法发布类似的问题。如果输入标记是用名称空间表示的,您可以帮助如何在xslt中表示吗?mbl:orderdetails,mbl:orderstatus?我在上面的链接中解释了这一点。我已经在中修改了as和,但仍然不起作用。