我需要使用xslt將xml文件轉換爲另一個xml文件。 輸入文件是如下:XML轉換
<root type="object">
<items type="array">
<item type="object">
<updated_at type="string">2017-05-20</updated_at>
<external_id type="null"></external_id>
<created_at type="string">2017-05-20</created_at>
<embed_code type="string">ec111</embed_code>
<status type="string">live</status>
<content_type type="string">video</content_type>
<name type="string"></name>
<hosted_at type="null"></hosted_at>
</item>
<item type="object">
<updated_at type="string">2017-05-19</updated_at>
<external_id type="null"></external_id>
<labels type="array">
<item type="object">
<name type="string">lbl name 1</name>
<full_name type="string">full lbl name 1</full_name>
<id type="string">lbl1</id>
<parent_id type="string">parent_id_1</parent_id>
</item>
</labels>
<created_at type="string">2017-05-20</created_at>
<embed_code type="string">ec112</embed_code>
<status type="string">live</status>
<content_type type="string">video</content_type>
<name type="string">test</name>
<hosted_at type="null"></hosted_at>
</item>
<item type="object">
<updated_at type="string">2017-05-19</updated_at>
<external_id type="null"></external_id>
<labels type="array">
<item type="object">
<name type="string">lbl name 2</name>
<full_name type="string">full lbl name 2</full_name>
<id type="string">lbl2</id>
<parent_id type="string">parent_id_2</parent_id>
</item>
<item type="object">
<name type="string">lbl name 3</name>
<full_name type="string">full lbl name 3</full_name>
<id type="string">lbl3</id>
<parent_id type="string">parent_id_3</parent_id>
</item>
</labels>
<created_at type="string">2017-05-20</created_at>
<embed_code type="string">ec113</embed_code>
<status type="string">live</status>
<content_type type="string">video</content_type>
<name type="string">testing</name>
<hosted_at type="null"></hosted_at>
</item>
</items>
</root>
需要將上面的XML變換,以下面的格式:
<?xml version="1.0"?>
<labels>
<item>
<embed_code>ec112</embed_code>
<name>lbl name 1</name>
<full_name>full lbl name 1</full_name>
<id>lbl1</id>
<parent_id>parent_id_1</parent_id>
</item>
<item>
<embed_code>ec113</embed_code>
<name>lbl name 2</name>
<full_name>full lbl name 2</full_name>
<id>lbl2</id>
<parent_id>parent_id_2</parent_id>
</item>
<item>
<embed_code>ec113</embed_code>
<name>lbl name 3</name>
<full_name>full lbl name 3</full_name>
<id>lbl3</id>
<parent_id>parent_id_3</parent_id>
</item>
</labels>
路徑根/項目/項目將具有embed_code標籤。並且在相同的路徑中它可能有標籤節點或者可能沒有標籤。標籤可能有一個或多個項目。
轉換規則如下: 1)需要獲取標籤和他們的孩子 2)刪除所有屬性 3)把embed_code節點到每個標籤/ item節點
下面是我到目前爲止的代碼:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="item">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<labels>
<xsl:for-each select="root/items/item">
<xsl:variable name="eCode" select="embed_code"/>
<xsl:for-each select="labels/*">
<item>
<embed_code>
<xsl:value-of select="$eCode"/>
</embed_code>
<xsl:for-each select="root/items/item/labels/item/*">
</xsl:for-each>
</item>
</xsl:for-each>
</xsl:for-each>
</labels>
</xsl:template>
<xsl:template match="@*" />
</xsl:stylesheet>
無法攜帶標籤/項目的子節點。請幫助我。
感謝
不要將工作分配轉儲到堆棧溢出。做你自己的工作。如果您對目前正在撰寫的XSLT樣式表有疑問,請發佈您的代碼並詢問具體問題,我們很樂意提供幫助。 – Tomalak
我已編輯該帖子以包括我迄今爲止的xslt工作。我想帶標籤/項目的子節點。 –
這樣比較好。始終包含您的代碼和問題描述。 – Tomalak