我是XSLT的新手。我有一個XML到XML轉換任務。我必須做的是通過檢查原始xml文件中的一些屬性值來放置xml節點來生成xml樹。XSLT - 通過檢查屬性添加內容
例如:
原始XML已經
<doc>
<sec id="sec_1" sec-type="scope"> </sec>
<sec id="sec_1" sec-type="norm-refs"> </sec>
//more codes
<doc>
什麼,我需要做的是,把一些新的XML節點(如例子: <c type="newaddingnode">​</c>
)在節點結束時向結果XML通過在節點檢查屬性
例如:
sec-type="norm-refs"
如果存在是在端o插入新節點f sec-type="scope"
。如果此屬性不存在,請在sec-type =「scope」末尾插入新節點。如果兩部分都失蹤了,什麼都不要做。
所以,如果我原來的XML如下,
<doc>
<sec id="sec_1" sec-type="scope"> </sec>
//more codes
<doc>
我的結果XML應該是這樣的
<doc>
<sec id="sec_1" sec-type="scope"> </sec>
<c type="newaddingnode">​</c>
//more codes
<doc>
如果我原來的XML如下,
<doc>
<sec id="sec_1" sec-type="norm-refs"> </sec>
//more codes
<doc>
我的結果xml應該是這樣的
<doc>
<sec id="sec_1" sec-type="norm-refs"> </sec>
<c type="newaddingnode">​</c>
//more codes
<doc>
如果<sec id="sec_1" sec-type="norm-refs">
和<sec id="sec_1" sec-type="scope">
都不存在,則不應添加新節點。還應該添加節點不應該是<sec>
的子節點。但它應該添加<sec>
節點的結尾。
其他語言這將是相對容易的任務,但我是新來的xslt,所以我想知道我怎麼能在XSLT中做到這一點。我可以使用<xsl:if>
或<xsl:choose>
來做到這一點嗎?
我有點困惑,因爲你似乎想插入新的節點(可能,作爲?的最後一個子節點)秒sec-type =「scope」是否sec-type = 「norm-refs」存在。您的需求聲明中是否有拼寫錯誤?顯示一些輸入案例的標本輸出將使它更清晰。 –
@MichaelKay感謝您的評論。我按照你的要求編輯了這個問題。如果你經過它真的很感激。 – sanjay
別擔心。一旦你知道如何,這在XSLT中也相對容易。但是,如果「範圍」和「規範參考」都存在(按任意順序)會發生什麼?新節點應該添加在那裏?謝謝! –