xsl:apply-template到一些元素集

时间:2016-09-08 08:22:52

标签: xml xslt

我有以下输入XML文档:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<book>
<article>
    <section><title>DESCRIPTION</title>
<para>The A380 is available with two types of turbofan engines, the
Rolls-Royce Trent 900 (variants A380-841, −842 and −843F) or the Engine
Alliance GP7000 (A380-861 and −863F).  Noise reduction was an important
requirement in the A380 design, and particularly affects engine design.</para>
<para>Landing gears<itemizedlist>
<listitem><para>Nose Landing Gear</para>
</listitem>
<listitem><para>Wing Landing Gear (Bogie Type, 4 Wheels  - 4 Braked)</para>
</listitem>
<listitem><para>Body Landing Gear (Bogie Type, 6 Wheels  - 4 Braked)</para>
</listitem>
</itemizedlist></para>
<section><title>Wing Landing Gear</title>
<para>Each wing landing gear has a leg assembly and
a four-wheel bogie beam. The WLG leg includes a Bogie Trim Actuator
(BTA) and an oleo-pneumatic shock absorber.</para>
</section><section><title>Body Landing Gear</title>
<para>The two body landing gears have a six-wheel bogie
beam and a leg assembly that includes an oleo- pneumatic shock absorber.
A two-piece drag-stay assembly mechanically locks the leg in the extended
position.</para>
    <figure xml:id="HSXWB-A-79-11-11-00A01-000A-DTRENTXWB-A-00-00-00-01A01-022A-D-fig-0001" label="1"><title>Landing gear</title>
        <mediaobject><imageobject><imagedata align="center" fileref="ICN-HSXWB-A-791111-H-F0302-00001-A-001-01"/></imageobject></mediaobject>
        </figure>
</section></section></article><book>

我的目标是最终得到一个类似于:

的转换XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<book>
<article>
<section><title>DESCRIPTION</title>
<p>The A380 is available with two types of turbofan engines, the
Rolls-Royce Trent 900 (variants A380-841, −842 and −843F) or the Engine
Alliance GP7000 (A380-861 and −863F).  Noise reduction was an important
requirement in the A380 design, and particularly affects engine design.</para>
<para>Landing gears<ul>
<li><p>Nose Landing Gear</p>
</li>
<li><p>Wing Landing Gear (Bogie Type, 4 Wheels  - 4 Braked)</p>
</li>
<li><p>Body Landing Gear (Bogie Type, 6 Wheels  - 4 Braked)</p>
</li>
</ul></p>
<section><title>Wing Landing Gear</title>
<p>Each wing landing gear has a leg assembly and
a four-wheel bogie beam. The WLG leg includes a Bogie Trim Actuator
(BTA) and an oleo-pneumatic shock absorber.</p>
</section><section><title>Body Landing Gear</title>
<p>The two body landing gears have a six-wheel bogie
beam and a leg assembly that includes an oleo- pneumatic shock absorber.
A two-piece drag-stay assembly mechanically locks the leg in the extended
position.</p>
    <fig xml:id="HSXWB-A-79-11-11-00A01-000A-DTRENTXWB-A-00-00-00-01A01-022A-D-fig-0001" label="1"><title>Landing gear</title>
        <image align="center" fileref="ICN-HSXWB-A-791111-H-F0302-00001-A-001-01"/></fig>
</section></section></article><book>

我想为section,title,para,list和figure的整个集合编写xslt。我如何用单个xsl:apply-template编写来覆盖所有标签转换集。请帮助别人

1 个答案:

答案 0 :(得分:0)

为要转换的每个元素编写模板,并使用标识转换模板作为基本构建块:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="itemizedlist">
        <ul>
            <xsl:apply-templates/>
        </ul>
    </xsl:template>

    <xsl:template match="listitem">
        <li>
            <xsl:apply-templates/>
        </li>
    </xsl:template>

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

您可以自己为figure添加更多模板。