使用XSL转换检索元素的文本

时间:2011-12-02 10:14:29

标签: xml xslt

我想用xslt检索一个元素的文本,但是我不能这样做。请问你能告诉我哪部分代码是假的? 我的xslt文件是:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="zoo">
    <html>
      <title>
        <xsl:text>ZOO</xsl:text>
      </title>
      <head>
        <h1>Behausung im Zoo "Zoogarten"</h1>
      </head>
      <p>
         <xsl:apply-templates select="zootier" />
      </p>
    </html>
  </xsl:template>
  <xsl:template match="zootier">
    <xsl:for-each select="zoo/zootier" >
      <xsl:apply-templates select="name" />
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

这部分代码是否正确检索元素文本?

这是我的示例xml文件:

<zoo   name="zoogarten">
  <zootier  id="tier1" flugfaeghig="false">
    <name>erna</name>
    <alter>2</alter>
    <schlachtgewicht>1500</schlachtgewicht>
  </zootier>
  <zootier id="tier2"  schimmel="false">
    <name>peter</name>
    <alter>4</alter>
    <tragezeit>11</tragezeit>
  </zootier>
  <zootier id="tier3" >
    <name>minka</name>
    <alter>3</alter>
    <tragezeit>2</tragezeit>
    <fellfarbe>hell</fellfarbe>
  </zootier>
   .....

1 个答案:

答案 0 :(得分:1)

很多部分。 zoo/zootier上下文中的zootier可能不是您想要的。你可能不需要任何for-each。有一个样本xml会有所帮助。

此外,title元素应该是head的子元素,但这不是您的直接问题。

编辑:处理zootier

的可能性之一
  <xsl:template match="zootier">
    <xsl:value-of select="name/text()"/>
    <xsl:if test="count(following-sibling::zootier)">,</xsl:if>
  </xsl:template>
相关问题