Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xslt仅在条件为true时复制元素和值_Xml_Xslt - Fatal编程技术网

Xml xslt仅在条件为true时复制元素和值

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

下面是我的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和,但仍然不起作用。