2016-09-28 7 views
1

xsltを新しくしました。助けてください: xsltを使用して既存のxmlファイルに新しい要素を作成します。下記のサンプルコードをご覧ください。xsltを使用して既存のxmlファイルに新しい要素を作成する

既存の出力:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="class.xsl"?> 
<class> 
<student>Jack</student> 
<student>Harry</student> 
<student>Rebecca</student> 
<teacher>Mr. Bean</teacher> 

</class> 

予想される出力:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="class.xsl"?> 
<class> 
<student>Jack</student> 
<student>Harry</student> 
<student>Rebecca</student> 
<teacher>Mr. Bean</teacher> 
<professor>SaiBaba</professor> 
</class> 
+0

xsltも投稿してください。ありがとう。 – potame

答えて

0

(あなたの質問に装着)ロジックとsimpelstと最短テンプレートの一つは次のようになります。

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

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

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

</xsl:stylesheet> 

@*すべての属性に一致します

node()

  • 素子
  • テキストノード
  • 処理命令(PI)ノード
  • コメントノード
と子軸上のすべての要素と一致する機能であります

最初のテンプレートindentity-copyは、ソースから出力まで1:1のコピーです。詳細はWiki hereをご覧ください。

2番目のテンプレートは、要素classと一致し、それ自身をコピーし、要素professorを追加します。純粋なテキストのみで要素を作成するには、空白の問題を減らす/回避する -

<xsl:element name="professor"> 
    <xsl:text>SaiBaba</xsl:text> 
</xsl:element> 
+0

uL1ありがとうございます。その作業が開かれたときにxmlファイルはxmlタグのように表されていません。 SaiBabaのような意味です。私は要素名と値のような要素の値を取得していません。この点で助けてください。 – Satish

+0

xsltはどこで実行しますか?ブラウザ?編集者? ''を開いた後、 ''を試してください。あなたの結果を投稿してください。 – uL1

+0

もう一度お返事ありがとうございます。私はこれを手に入れました。このため私はIEでxmlファイルを開いて、私は期待された出力を見ることができるそのIMでF12デバッガを使用しました。ここに私はもう一つの質問がある場合私は既存の要素のサブ要素を追加し、どのようにそれを進めたいですか? – Satish

関連する問題