0

我想知道为什么模板 match="*" mode="Value_Or_Null_with_comma" 没有被调用和执行?

以下包括我的 XSL 代码:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:abc="urn:example-x-    
com:abc" xmlns:ns3="http://Example1.com" xmlns:ns4="http://Example2.com" exclude-result-  
prefixes="abc" version="1.0">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:output method="text" />
<xsl:template match="ns3:productionOrder">
<xsl:apply-templates select="ns4:ProductionOrder/ns4:productionOrderData/ns4:ProductionOrderData"   
mode="Technical"></xsl:apply-templates>
</xsl:template>
<xsl:template match="node()">
<xsl:if test="/ns3:AddProductionOrder">
  <xsl:apply-templates select="ns3:productionOrder"></xsl:apply-templates>
</xsl:if>
</xsl:template>
<xsl:template match="*" mode="Value_Or_Null_with_comma">
<xsl:choose>
  <xsl:when test=". and ./text()">
    <!--test="$Parameter and $Parameter/text()"-->
    <xsl:choose>
      <xsl:when test="number(.) = .">
        <xsl:value-of select="."></xsl:value-of>
      </xsl:when>
      <xsl:otherwise>'<xsl:value-of select="."></xsl:value-of>'</xsl:otherwise>
    </xsl:choose>
  </xsl:when>
  <xsl:otherwise>NULL</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="ns4:ProductionOrderData" mode="Technical">
<xsl:text>Exec RecipeData_List,
</xsl:text>
<apply-templates select="ns4:materialNumber" mode="Value_Or_Null_with_comma"></apply-templates>
<!--,-->
<xsl:text></xsl:text>NULL x1,
<xsl:text></xsl:text>NULL x2,
</xsl:template>
</xsl:stylesheet>

相应的 XML 文件是:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Test MODE_method call.xsl"?>
<ns3:AddProductionOrder xmlns:ns3="http://Example1.com">
 <ns3:productionOrder>
  <ns4:ProductionOrder xmlns:ns4="http://Example2.com">
   <ns4:productionOrderData>
    <ns4:ProductionOrderData>
      <ns4:Comment1>Mele1</ns4:Comment1>
      <ns4:materialNumber>10001895</ns4:materialNumber>
      <ns4:maxFimeAllowed>0.0 </ns4:maxFimeAllowed>
    </ns4:ProductionOrderData>
   </ns4:productionOrderData>
  </ns4:ProductionOrder>
 </ns3:productionOrder>
</ns3:AddProductionOrder>

结果是(但是错了,不显示料号的内容):

Exec RecipeData_List,
NULL x1,
NULL x2,

结果应该是:

Exec RecipeData_List,
10001895,
NULL x1,
NULL x2,

另一个提示:我在这里使用“技术”模式,因为稍后我会从 转换更多数据ns4:ProductionOrderData,但这不是发布代码的内容,它只是一个较短的版本,Value_Or_Null_with_comma具有未执行的相同问题。

谢谢您的帮助!

4

0 回答 0