我試圖在xml中使用xslt 1.0(使用visual studio 2015)轉換。XSLT 1.0轉換覆蓋或添加子節點
我給了房子的名稱和應該在房子內的傢俱的名稱和新值。
如果具有給定名稱的傢俱已經存在,請覆蓋其值。
如果沒有,請創建一個新的。
如果傢俱在家中但不應被覆蓋,只需複製它。
已經在家裏的傢俱的訂單不應該改變。
我對C++,C#,JAVA等語言並不陌生,但xslt是......不同的。 雖然在上述語言中這是一個簡單的任務,但我真的在這裏掙扎。
請幫忙。
XML代碼
<Street>
<House Name="house1">
<Window>niceView</Window>
<Furniture Name="name1">value1</Furniture>
<Furniture Name="name2">value2</Furniture>
<Furniture Name="name3">value3</Furniture>
<Furniture Name="name4">value4</Furniture>
</House>
<House>
<Brick Name="cubrick"></Brick>
<Furniture name="name1>value</Furniture>
</House>
</Street>
XSLT beggining
<?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" indent="yes"/>
<xsl:param name="house1" select='house1'/>
<xsl:param name="name2" select='newValue1'/>
<xsl:param name="name4" select='newValue2'/>
<xsl:param name="name10" select='newValue5'/>
...
所需的輸出是:
<Street>
<House Name="house1">
<Window>niceView</Window>
<Furniture Name="name1">value1</Furniture>
<Furniture Name="name2">newValue1</Furniture>
<Furniture Name="name3">value3</Furniture>
<Furniture Name="name4">newValue2</Furniture>
<Furniture Name="name10">newValue5</Furniture>
</House>
<House>
<Brick Name="cubrick"></Brick>
<Furniture name="name1>value</Furniture>
</House>
</Street>
我不明白你的輸出爲第二'' House'。 –
Sry,那是一個錯字。那第二間房子根本不變。它可能會或可能沒有屬性名稱。它可能有任何東西。我只對屬性Name = $ house1的House感興趣。 –
您確定需要參數化所顯示的值嗎?這非常尷尬,因爲您無法通過名稱輕鬆選擇參數。 –