これは非常に基本的な質問のように思えますが、私はここ数日、答えを探して、役に立たない実験をしました。私はこれを変えようとしています:
<bold> bang </bold>
<line> I was walking down the street </line>
<line> when I heard a <bold> bang </bold></line>
の中へ:
<strong> bang </strong>
<textline> I was walking down the street </textline>
<textline> when I heard a <strong> bang </strong></textline>
これを使用して:
<xsl:template name="first" match="//line">
<textline>
<xsl:value-of select="."/>
</textline>
</xsl:template>
<xsl:template name="second" match="//bold">
<strong>
<xsl:value-of select="."/>
</strong>
</xsl:template>
<xsl:template match="@*|node()|line|bold">
<xsl:copy>
<xsl:apply-templates select="@*|node()|line|bold"
/>
</xsl:copy>
</xsl:template>
私の問題は、それが<bold>
OR<line>
タグにヒットするが、両方にはヒットしないことです。例えば:
<strong> bang </strong>
<textline> I was walking down the street </textline>
<textline> when I heard a bang </textline>
<bold>
タグが常に内にある場合<line>
、またはタグ内にない場合は、簡単です。
優先されると思った、より具体的なテンプレートを追加してみました。
<xsl:template name="third" match="//l/bold">
<strong>
<xsl:value-of select="."/>
</strong>
</xsl:template>
しかし、それでも望ましい結果は得られません。私のエラーは言語の基本的な何かの誤解によるものだと強く思いますが、周りを検索しても解決策が見つかりません。助けていただければ幸いです。