永远不会调用XSLT模板,因此匹配存在

时间:2013-04-29 22:18:33

标签: xslt-1.0

我想知道为什么模板匹配=“*”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不是执行。

感谢您的帮助!

0 个答案:

没有答案