2016-09-28 92 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的更多信息。

第二個模板匹配您的元素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文件,並且使用了F12調試器,以便能夠看到預期的輸出。在這裏我還有一個問題,如果我想添加現有元素的子元素,然後如何繼續它? – Satish