我们必须为模板标签中的匹配赋予啥值?

Posted

技术标签:

【中文标题】我们必须为模板标签中的匹配赋予啥值?【英文标题】:What value we have to give for match in template tag?我们必须为模板标签中的匹配赋予什么值? 【发布时间】:2011-12-05 01:46:52 【问题描述】:

源xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Inbound Message -->
<Sales xmlns="abc:org.xcbl:schemas/xcbl/v4/xcbl4.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
</Sales> 

代码:

 <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.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="/Sales">
    </xsl:template>  

查询:在源 xml 中,Sales 根节点标记包含以下内容 价值观。 xmlns="abc:org.xcbl:schemas/xcbl/v4/xcbl4.xsd" xmlns:SOAPENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding

如何启动模板?

<xsl:template match="/Sales'> 
<xsl:template match="/'> 

以上代码不工作。请帮我解决这个问题

.

【问题讨论】:

【参考方案1】:

在 XSLT 中声明命名空间,然后使用限定名,例如:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ns="abc:org.xcbl:schemas/xcbl/v4/xcbl4.xsd">

    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

    <xsl:template match="/ns:Sales">
    </xsl:template>

</xsl:stylesheet>

【讨论】:

嗨 Kirill,你能告诉我为什么我们需要使用 ns:。我是否也需要为子节点添加相同的内容。如何检索子节点? @Sara,那是因为您的 XML 中的元素位于命名空间中。要检索子元素,您可以使用完全限定名称(带前缀)或例如&lt;xsl:template match="/ns:Sales"&gt; &lt;xsl:apply-templates select="*"/&gt; &lt;/xsl:template&gt;。这会将模板应用于所有子元素。

以上是关于我们必须为模板标签中的匹配赋予啥值?的主要内容,如果未能解决你的问题,请参考以下文章

AWS 云形成模板 - 为模板中的堆栈提供标签

我应该为 iOS 布尔状态使用啥值?

Keras 中的 model.evaluate() 返回啥值?

keras 的指标返回啥值?标量还是张量?

round()round函数返回啥值?

覆盖模板时 TeamCity 中的 VCS 标签