使用XSL进行XML解析而不使用xsl:for-each

时间:2015-08-10 10:31:41

标签: xml xslt

我正在尝试解析以下XML文件内容

<firstunit>
   <head>page</head>
   <para>ijkl</para>
   <para>mno</para>
   <para>xyz</para>
   <note>ask</note>
</firstunit>
<firstunit>
   <para>para</para>
   <head>head</head>
   <para>abcd</para>
   <para>mnop</para>
   <head>xyz</head>
   <note>askldj</note>
</firstunit>

问题在于,如果我使用

<xsl:for-each select="para">

我将首先获得所有para标签,然后是其余部分。但是我不会按顺序获取标签。有没有办法遍历这个XML并按顺序获取所有标签?

1 个答案:

答案 0 :(得分:1)

XSLT中通常的推送处理样式编码是编写模板并使用apply-templates,例如

<xsl:template match="firstunit">
  <div>
    <xsl:apply-templates/>
  </div>
</xsl:template>

<xsl:template match="para">
  <p>
    <xsl:apply-templates/>
  </p>
</xsl:template>

<xsl:template match="head">
  <h1>
    <xsl:apply-templates/>
  </h1>
</xsl:template>

这样,您可以保持代码结构良好,处理按文档顺序进行。