2011-02-02 6 views
0

私はxslt1.0を使用しています。私は適用-テンプレートをするために、ノード間のwを持っている:instrTextとワット:fldCharワット:fldCharType = "終了" />と...私を助けてください..ノード間にテンプレートを適用する

<w:r w:rsidRPr="00ED1487"> 
    <w:rPr> 
     <w:i/> 
     <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
    </w:rPr> 
    <w:instrText xml:space="preserve" 
    > DATE \@ "dddd, MMMM dd, yyyy" \* MERGEFORMAT </w:instrText> 
</w:r> 
<w:r w:rsidRPr="00ED1487"> 
    <w:rPr> 
     <w:i/> 
     <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
    </w:rPr> 
    <w:fldChar w:fldCharType="separate"/> 
</w:r> 
<w:r w:rsidRPr="00ED1487"> 
    <w:rPr> 
     <w:i/> 
     <w:noProof/> 
     <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
    </w:rPr> 
    <w:t>Wednesday</w:t> 
</w:r> 
<w:r> 
    <w:rPr> 
     <w:noProof/> 
    </w:rPr> 
    <w:t>, February 02, 2011</w:t> 
</w:r> 
<w:r> 
    <w:fldChar w:fldCharType="end"/> 
</w:r> 
+0

これ以上の詳細を提供する必要があります。上記のXMLを何に変換したいのですか?ハイライトした場所に何を挿入しますか?文書をコピーして追加情報を追加する必要がありますか? – ColinE

+0

あなたのガイドラインをお寄せいただきありがとうございます。このxmlをhtmlに変換したいのですが、xsltテンプレートが必要です。 – vignesh

+0

良い質問、+1。私の答えは ''を使った完全な解決策を見てください。 :) –

答えて

1

この変換

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

<xsl:key name="kinBetween" match="w:r" 
    use="concat(generate-id(preceding-sibling::w:r[w:instrText][1]), 
       '+', 
       generate-id(following-sibling::w:r 
           [w:fldChar/@w:fldCharType='end']) 
      ) 
     "/> 

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

<xsl:template match="/*"> 
    <t> 
    <xsl:apply-templates select= 
    "key('kinBetween', 
     concat(generate-id(w:r[w:instrText][1]), 
       '+', 
       generate-id(w:r[w:fldChar/@w:fldCharType='end'][1]) 
       ) 
     ) 
    "/> 
    </t> 
</xsl:template> 
</xsl:stylesheet> 

設け入力(整形式XML文書に補正)に適用:

<t xmlns:w="w:w"> 
    <w:r w:rsidRPr="00ED1487" > 
     <w:rPr> 
      <w:i/> 
      <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
     </w:rPr> 
     <w:instrText xml:space="preserve"> DATE \@ "dddd, MMMM dd, yyyy" \* MERGEFORMAT </w:instrText> 
    </w:r> 
    <w:r w:rsidRPr="00ED1487"> 
     <w:rPr> 
      <w:i/> 
      <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
     </w:rPr> 
     <w:fldChar w:fldCharType="separate"/> 
    </w:r> 
    <w:r w:rsidRPr="00ED1487"> 
     <w:rPr> 
      <w:i/> 
      <w:noProof/> 
      <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
     </w:rPr> 
     <w:t>Wednesday</w:t> 
    </w:r> 
    <w:r> 
     <w:rPr> 
      <w:noProof/> 
     </w:rPr> 
     <w:t>, February 02, 2011</w:t> 
    </w:r> 
    <w:r> 
     <w:fldChar w:fldCharType="end"/> 
    </w:r> 
</t> 

の(特別な処理が必要とされていないとして識別テンプレートを使用して)処理に必要な期間内に正確ノードと生成希望、正しい結果

<t xmlns:w="w:w"> 
    <w:r w:rsidRPr="00ED1487"> 
     <w:rPr> 
     <w:i/> 
     <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
     </w:rPr> 
     <w:fldChar w:fldCharType="separate"/> 
    </w:r> 
    <w:r w:rsidRPr="00ED1487"> 
     <w:rPr> 
     <w:i/> 
     <w:noProof/> 
     <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> 
     </w:rPr> 
     <w:t>Wednesday</w:t> 
    </w:r> 
    <w:r> 
     <w:rPr> 
     <w:noProof/> 
     </w:rPr> 
     <w:t>, February 02, 2011</w:t> 
    </w:r> 
</t> 

説明kinBetweenという名前のキーが定義され、使用されています開始間隔要素と終了間隔要素に必要なプロパティを持つ2つのw:r要素の間にあるすべてのw:r要素を識別します。

関連する問題