如何创建属性?

时间:2014-03-27 22:54:42

标签: xml xslt

我的xml

<article>
 <section>
  <title id="chapter-introduction">Introduction</title>

  <para>Some text</para>
 </section>

 <section>
  <title>Problem description</title>

  <para>Some text</para>
  <para>Please click <link linkend="chapter-introduction">here</link> to
    go to the Introduction chapter.</para>
 </section>
</article>

我的xsl

<xsl:template match="section/title">
 <H2>
  <xsl:attribute name="id">
   <xsl:value-of select="@id" />
  </xsl:attribute>
  <xsl:value-of select="."/>
 </H2>
</xsl:template>


<xsl:template match="link">
 <u>    
  <a style="color:green" href="#{@linkend}"> 
   <xsl:value-of select="."/>
  </a>
 </u>
</xsl:template>   

我想在输出html文档中创建内部链接。我的模板在每个&#34;部分/标题&#34;中创建。属性id,但我不想使用值&#34; null&#34;获取id属性。 在输出中,我想获得<H2 id="chapter-introduction">Introduction</H2> ... <H2>Problem description</H2>

2 个答案:

答案 0 :(得分:3)

简单的事情:

<xsl:template match="section/title">
    <H2>
        <xsl:copy-of select="@id" />
        <xsl:value-of select="."/>
    </H2>
</xsl:template>

答案 1 :(得分:1)

您可以通过测试检查是否存在<xsl:attribute>属性来围绕id,因此仅当<title>实际包含该属性时才会对其进行处理:

<xsl:if test="@id">
    <xsl:attribute name="id">
        <xsl:value-of select="@id" />
     </xsl:attribute>
</xsl:if>