3
4

1 に答える 1

3

その属性を持つ要素を、それらを挿入する前の兄弟にマップするキーを定義します。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cci="urn:schemas-ccieurope.com"
    xmlns:ccit="http://www.ccieurope.com/xmlns/ccimltables" xmlns:ccix="http://www.ccieurope.com/xmlns/ccimlextensions"
    exclude-result-prefixes="xsl cci ccit ccix">

    <xsl:key name="k1" match="cci:p[@ccix:annotation = 'insertion']"
      use="generate-id(preceding-sibling::cci:p[not(@ccix:annotation)][1])"/>

    <xsl:strip-space elements="*" />
    <xsl:output method="html" encoding="UTF-8" />

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

    <xsl:template match="cci:p[not(@ccix:annotation)]">
      <p>
        <xsl:apply-templates select="node() | key('k1', generate-id())/node()"/>
      </p>
    </xsl:template>

    <xsl:template match="cci:p[@ccix:annotation = 'insertion']"/>

    <xsl:template match="cci:italic">
        <em>
            <xsl:apply-templates />
        </em>
    </xsl:template>

    <xsl:template match="cci:endnote_contrib">
        <em>
            <xsl:apply-templates />
        </em>
    </xsl:template>

    <xsl:template match="cci:extra_leading">
    </xsl:template>

    <xsl:template match="cci:bold">
        <strong>
            <xsl:apply-templates />
        </strong>
    </xsl:template>

    <xsl:template match="cci:subhead">
        <h2 class="cci-subhead">
            <xsl:value-of select="." />
        </h2>
    </xsl:template>

    <xsl:template match="ccit:table">
        <table class="cci-table">
            <xsl:apply-templates />
        </table>
    </xsl:template>

    <xsl:template match="ccit:tr">
        <tr>
            <xsl:apply-templates />
        </tr>
    </xsl:template>

    <xsl:template match="ccit:td">
        <td>
            <xsl:value-of select="." />
        </td>
    </xsl:template>

    <xsl:template match="cci:l_category">
        <h2 class="cci-category">
            <xsl:value-of select="." />
        </h2>
    </xsl:template>

    <xsl:template match="cci:l_category_sub">
        <h2 class="cci-category-sub">
            <xsl:value-of select="." />
        </h2>
    </xsl:template>

    <xsl:template match="cci:l_region">
        <h2 class="cci-region">
            <xsl:value-of select="." />
        </h2>
    </xsl:template>

    <xsl:template match="cci:l_region_location">
        <h2 class="cci-region-location">
            <xsl:value-of select="." />
        </h2>
    </xsl:template>

    <xsl:template match="cci:l_region_sub">
        <h2 class="cci-region-sub">
            <xsl:value-of select="." />
        </h2>
    </xsl:template>

    <xsl:template match="factbox_bold">
        <strong>
            <xsl:apply-templates />
        </strong>
    </xsl:template>

    <xsl:template match="cci:factbox_head">
        <strong>
            <xsl:value-of select="." />
        </strong>
    </xsl:template>

    <xsl:template match="cci:z_sym_round_bullet">
        &#8226;
        <xsl:value-of select="." />
    </xsl:template>

    <xsl:template match="cci:z_sym_triangle_bullet">
        &#8226;
        <xsl:value-of select="." />
    </xsl:template>

    <xsl:template match="text()">
        <xsl:value-of select="." />
    </xsl:template>
</xsl:stylesheet>

そのスタイルシートでSaxon 6.5.5は結果を出力します

<html>
   <p>OAKLAND, Calif. &#8212; A former student suspected of opening fire at a small Christian college in California, killing seven people
      and wounding three, was targeting a school administrator and former classmates who he felt had treated him unfairly, police
      said yesterday.
   </p>
   <p>Oakland Police Chief Howard Jordan said at a news conference that One Goh, 43, who had been expelled from Oikos University,
      had been cooperative with investigators after being taken into custody but &#8220;not particularly remorseful.&#8221;
   </p>
   <p>&#8220;We know that he came here with the intent of locating an administrator, and she was not here,&#8221; Jordan said. &#8220;He then went
      through the entire building systematically and randomly shooting victims.&#8221;
   </p>
   <p>The midmorning attack at Oikos, a small Oakland college that has links to the Korean-American Christian community, was the
      deadliest shooting rampage on a U.S. college campus since 
   </p>
</html>

入力用

<cci:body class="element" displayname="body" name="body" xmlns:cci="urn:schemas-ccieurope.com" xmlns:ccix="http://www.ccieurope.com/xmlns/ccimlextensions">
    <cci:p>OAKLAND, Calif. — A former student suspected of opening fire at a small Christian college in California, killing seven people and wounding three, was targeting a school administrator and former classmates who he felt had treated him unfairly, police said yesterday.</cci:p>
    <cci:p>Oakland Police Chief Howard Jordan said at a news conference that One Goh, 43, who had been expelled from Oikos University, had been cooperative with investigators </cci:p>
    <cci:p ccix:annotation="insertion">after being taken into custody but “not particularly remorseful.”&lt;/cci:p>
    <cci:p>“We know that he came here with the intent of locating an administrator, and she was not here,” Jordan said. “He then went through the entire building systematically and randomly shooting victims.”&lt;/cci:p>
    <cci:p>The midmorning attack at Oikos, a small Oakland college that has links to the Korean-American Christian community, was the deadliest shooting rampage on a U.S. college campus since </cci:p>
</cci:body>
于 2012-04-09T17:03:35.473 に答える