在标记内部调用时 cmn 命名空间不起作用
cmn namespace not working when call inside the tag
Xml file is use as input to transformatiio
<SNXDispositionUpdatedMessage
xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes">
<ControlFileHeader>
<cmn:FileSenderNumber>0358716000006</cmn:FileSenderNumber>
</ControlFileHeader>
</SNXDispositionUpdatedMessage>
xlst file is used to transform rules
<xsl:stylesheet version="2.0"
xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<validation>
<xsl:apply-templates
select="SNXDispositionUpdatedMessage/ControlFileHeader"/>
<xsl:apply-templates
</validation>
</xsl:template>
<xsl:template match="SNXDispositionUpdatedMessage/ControlFileHeader">
<fieldvalidation>
<xsl:choose>
<xsl:when test="cmn:FileSenderNumber != ''">
<validtedfield>FileSenderNumber</validtedfield>
<value><xsl:value-of select="cmn:FileSenderNumber"/></value>
<status>Valid</status>
<reason></reason>
</xsl:when>
<xsl:otherwise>
<validtedfield>FileSenderNumber</validtedfield>
<value><xsl:value-of select="cmn:FileSenderNumber"/></value>
<status>Not Valid</status>
<reason>FileSenderNumber should not be empty.</reason>
</xsl:otherwise>
</xsl:choose>
</fieldvalidation>
</xsl:template>
</xsl:stylesheet>
当前输出
<?xml version="1.0" encoding="UTF-8"?>
<validation xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes"/>
<validation xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes"/>
当我在没有 cmn 命名空间的情况下使用时,xslt 转换工作正常。 cmn namespace.How 的问题会解决这个问题吗?标签中使用了 cmn 命名空间,但没有 cmn 命名空间 header 转换终止。
xmlns:t="urn:tracelink:mapper:sl:serial_number_exchange"
(在本例中为 t)在 XSLT 中并使用前缀即访问元素。
t:SNXDispositionUpdatedMessage or t:ControlFileHeader
或者使用命名空间 cmn 添加您的 xml 标签的最佳方式,例如
cmn:ControlFileHeader
Xml file is use as input to transformatiio
<SNXDispositionUpdatedMessage
xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes">
<ControlFileHeader>
<cmn:FileSenderNumber>0358716000006</cmn:FileSenderNumber>
</ControlFileHeader>
</SNXDispositionUpdatedMessage>
xlst file is used to transform rules
<xsl:stylesheet version="2.0"
xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<validation>
<xsl:apply-templates
select="SNXDispositionUpdatedMessage/ControlFileHeader"/>
<xsl:apply-templates
</validation>
</xsl:template>
<xsl:template match="SNXDispositionUpdatedMessage/ControlFileHeader">
<fieldvalidation>
<xsl:choose>
<xsl:when test="cmn:FileSenderNumber != ''">
<validtedfield>FileSenderNumber</validtedfield>
<value><xsl:value-of select="cmn:FileSenderNumber"/></value>
<status>Valid</status>
<reason></reason>
</xsl:when>
<xsl:otherwise>
<validtedfield>FileSenderNumber</validtedfield>
<value><xsl:value-of select="cmn:FileSenderNumber"/></value>
<status>Not Valid</status>
<reason>FileSenderNumber should not be empty.</reason>
</xsl:otherwise>
</xsl:choose>
</fieldvalidation>
</xsl:template>
</xsl:stylesheet>
当前输出
<?xml version="1.0" encoding="UTF-8"?>
<validation xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes"/>
<validation xmlns="urn:tracelink:mapper:sl:serial_number_exchange"
xmlns:cmn="urn:tracelink:mapper:sl:commontypes"/>
当我在没有 cmn 命名空间的情况下使用时,xslt 转换工作正常。 cmn namespace.How 的问题会解决这个问题吗?标签中使用了 cmn 命名空间,但没有 cmn 命名空间 header 转换终止。
xmlns:t="urn:tracelink:mapper:sl:serial_number_exchange"
(在本例中为 t)在 XSLT 中并使用前缀即访问元素。
t:SNXDispositionUpdatedMessage or t:ControlFileHeader
或者使用命名空间 cmn 添加您的 xml 标签的最佳方式,例如
cmn:ControlFileHeader