我想知道为什么模板 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
具有未执行的相同问题。
谢谢您的帮助!