2013-09-23 50 views
0

我想屬性轉換爲子元素,即把下面的變換屬性的子元素:使用XSLT

<employees companyid="101"> 
    <record> 
     <id>1</id> 
     <name>pradeep</name> 
     <designation>softeng</designation> 
    </record> 
    <record> 
     <id>2</id> 
     <name>som</name> 
     <designation>softeng</designation> 
    </record> 
    <record> 
     <id>3</id> 
     <name>Javed</name> 
     <designation>softeng</designation> 
    </record> 
</employees> 

我想用這種方式

<employees> 
    <record> 

     <id>1</id> 
     <name>pradeep</name> 
     <designation>softeng</designation> 
    </record> 
    <record> 
     <id>2</id> 
     <name>som</name> 
     <designation>softeng</designation> 
    </record> 
    <record> 
     <id>3</id> 
     <name>Javed</name> 
     <designation>softeng</designation> 
    </record> 
</employees> 

它不工作轉變。有什麼建議麼?

+5

所以我們要找出兩者之間的區別是什麼?如果我找到他們所有的東西都得到巧克力嗎? – ppeterka

+1

請分享您的嘗試。對於這個問題,兩個適用收盤標準如下:「關於與你寫必須說明具體問題的代碼問題的問題 - 和包括有效的代碼複製它 - 在這個問題本身見SSCCE.org指導。」和 「問題,要求代碼必須證明正在解決這個問題的理解最少包括嘗試的解決方案,爲什麼他們沒有工作,和預期的結果也請參閱:堆棧溢出問題清單」 – Marcin

+0

是您預期的輸出是正確的,通過方式?還有就是你的輸入樣本中的「companyid」屬性,但它不會出現在你的輸出。正如你所提到的將屬性轉化爲子元素一樣,它表明某些事情已經走過了。謝謝! –

回答

0

我希望你需要在每個<record>水平<companyid>元素。您可以使用以下方法:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

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

    <xsl:template match="record"> 
     <xsl:copy> 
      <companyid><xsl:value-of select="ancestor::employees/@companyid"/></companyid> 
      <xsl:apply-templates /> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

如果你只是想讓它出現在第一<record>元素上,你可以改變<xsl:template match="record"><xsl:template match="record[1]">

0
<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
    <xsl:template match="/"> 
     <employees> 
      <xsl:copy-of select="employees/*"/> 
     </employees> 
    </xsl:template> 
</xsl:stylesheet> 

假設你的輸出是正確的,你只需要刪除companyid屬性。

+0

我們都猜他想要的東西,因爲輸出是不正確的diplayed,但他說:「只是想轉換屬性的子元素」 –