代码之家  ›  专栏  ›  技术社区  ›  Franklin

对具有名称空间的元素进行xpath选择

  •  11
  • Franklin  · 技术社区  · 16 年前

    <?xml version="1.0" encoding="utf-8"?>
    <article xmlns="http://docbook.org/ns/docbook" version="5.0">
    <title>I Am Title</title>
    <para>I am content.</para>
    </article>
    

    title 如果我删除 xmlns

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/>
        <xsl:template match="/">
            <xsl:apply-templates select="article"/>
        </xsl:template>
        <xsl:template match="article">
          <p><xsl:value-of select="title"/></p>
        </xsl:template>
        <xsl:template match="text()"/>
    </xsl:stylesheet>
    

    article

    1 回复  |  直到 16 年前
        1
  •  17
  •   AnthonyWJones    16 年前

    您需要为命名空间添加一个别名,并在XPath中使用该别名

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:a="http://docbook.org/ns/docbook"
       exclude-result-prefixes="a"
       >
    <xsl:output method="html"/>
        <xsl:template match="/">
            <xsl:apply-templates select="a:article"/>
        </xsl:template>
        <xsl:template match="a:article">
          <p><xsl:value-of select="a:title"/></p>
        </xsl:template>
        <xsl:template match="text()"/>
    </xsl:stylesheet>
    
    推荐文章