我们必须为模板标签中的匹配赋予啥值?
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 中的元素位于命名空间中。要检索子元素,您可以使用完全限定名称(带前缀)或例如<xsl:template match="/ns:Sales"> <xsl:apply-templates select="*"/> </xsl:template>
。这会将模板应用于所有子元素。以上是关于我们必须为模板标签中的匹配赋予啥值?的主要内容,如果未能解决你的问题,请参考以下文章