如何在xslt中使用参数

  • 本文关键字:参数 xslt xslt xslt-1.0
  • 更新时间 :
  • 英文 :


我正在尝试打印xml文件中的标题和dob列表。但是我在代码中找不到错误。在这里,我试图准确地理解xsl 中的参数是如何工作的

这是xml代码

<?xml-stylesheet type="text/xsl" href="aa.xslt"?> 
<tutorial>
    <section>
    <title>Gene Splicing for Young People</title>
    <panel>
        <title>Introduction1</title>
        <dob>86</dob>
        <dof>86</dof>
    <!-- ... -->
    </panel>
    <panel>
    <title>Discovering the secrets of life and creation</title>
    <dob>85</dob>
    <!-- ... -->
    </panel>
    <panel>
    <title>"I created him for good, but he's turned out evil!"</title>
    <dob>84</dob>
    <!-- ... -->
    </panel>
    <panel>
    <title>When angry mobs storm your castle</title>
    <dob>88</dob>
    <!-- ... -->
    </panel>
    </section>
</tutorial>

这是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="tutorial/section/panel">

  <xsl:call-tempate name="boo">
      <xsl:with-param name="myname" select="title" />
      <xsl:with-param name="mydob" select="dob" />
  </xsl:call-template>
</xsl:template>

 <xsl:template name="boo">
  <xsl:param name="myname" select="'Not Available'" />
  <xsl:param name="mydob" select="'Not Available'" />
  <div>
  NAME: <xsl:value-of select="$myname" />
  <br />
  DOB: <xsl:value-of select="$mydob" />
  <hr />
  </div>
</xsl:template> 
</xsl:stylesheet>

期望输出是,简介186

正在发现。。。。85

等等。

看起来你正在尝试输出面板的标题,所以尝试更改:

<xsl:template match="tutorial/section">

至:

<xsl:template match="tutorial/section/panel">

编辑

如果您在显示"不可用"时遇到问题,那是因为当元素不存在并且覆盖默认值时,您正在向参数传递一个空字符串。

你可以做一些类似的事情:

<xsl:template match="tutorial/section/panel">
    <xsl:call-template name="boo">
        <xsl:with-param name="myname">
            <xsl:choose>
                <xsl:when test="title">
                    <xsl:value-of select="title"/>
                </xsl:when>
                <xsl:otherwise>Not Available</xsl:otherwise>
            </xsl:choose>
        </xsl:with-param>
        <xsl:with-param name="mydob">
            <xsl:choose>
                <xsl:when test="dob">
                    <xsl:value-of select="dob"/>
                </xsl:when>
                <xsl:otherwise>Not Available</xsl:otherwise>
            </xsl:choose>               
        </xsl:with-param>
    </xsl:call-template>
</xsl:template>

或者类似的东西:

<xsl:template match="tutorial/section/panel">
    <xsl:choose>
        <xsl:when test="title and dob">
            <xsl:call-template name="boo">
                <xsl:with-param name="myname" select="title" />
                <xsl:with-param name="mydob" select="dob" />
            </xsl:call-template>
        </xsl:when>
        <xsl:when test="dob">
            <xsl:call-template name="boo">
                <xsl:with-param name="mydob" select="dob" />
            </xsl:call-template>                
        </xsl:when>
        <xsl:when test="title">
            <xsl:call-template name="boo">
                <xsl:with-param name="myname" select="title" />
            </xsl:call-template>                
        </xsl:when>
        <xsl:otherwise>
            <xsl:call-template name="boo"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新