2

これは非常に基本的な質問のように思えますが、私はここ数日、答えを探して、役に立たない実験をしました。私はこれを変えようとしています:

<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>

しかし、それでも望ましい結果は得られません。私のエラーは言語の基本的な何かの誤解によるものだと強く思いますが、周りを検索しても解決策が見つかりません。助けていただければ幸いです。

4

2 に答える 2

1

この短くて簡単な変換:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

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

 <xsl:template match="line">
     <textline><xsl:apply-templates/></textline>
 </xsl:template>
</xsl:stylesheet>

次の XML ドキュメント(整形式の XML ドキュメントになるように単一の最上位要素にラップされた、提供された XML フラグメント) に適用された場合:

<t>
    <bold> bang </bold>
    <line> I was walking down the street </line>
    <line> when I heard a <bold> bang </bold></line>
</t>

必要な正しい結果が生成されます

<strong> bang </strong>
<textline> I was walking down the street </textline>
<textline> when I heard a <strong> bang </strong></textline>
于 2012-09-21T03:55:46.493 に答える
0

value-of特定のテンプレートではなく、 を使用しますapply-templates。1 つのセットを一致させた後、タグの再帰処理を続行したい。

于 2012-09-20T21:45:11.503 に答える