2017-08-02 83 views
0

我有一個xml文檔,我正嘗試重新組織和重新格式化。我一直試圖使用氧氣的重構工具來包裝特定元素或元素組。但不是將所需的元素分組在一起,而是單獨包裝每個匹配的元素。我該如何編寫一個XPath表達式,以這種方式定位和分組元素:使用XPath重構氧氣中的xml

使用包裹元素工具將前3個塊元素包裝在一個s元素中。

從這個狀況:

<system> 
    <n>1057</n> 
    <chunk>X1</chunk> 
    <chunk>C6HF5</chunk> 
    <chunk>Pentafluorbenzol</chunk> 

    <chunk>C6H2F41,2,3,5-Tetrafluorbenzol</chunk> 
    <chunk>Äquimolare Mischung: </chunk> 
    <chunk/> 
    <r>[F5]</r> 
    <c>25°C</c> 
    <chunk>ΔHM = 1,84 cal/mol Misch. = 7,7 J/mol Misch.</chunk> 

向該:

<system> 
    <n>1057</n> 
    <s><chunk>X1</chunk> 
    <chunk>C6HF5</chunk> 
    <chunk>Pentafluorbenzol</chunk></s> 

    <chunk>C6H2F41,2,3,5-Tetrafluorbenzol</chunk> 
    <chunk>Äquimolare Mischung: </chunk> 
    <chunk/> 
    <r>[F5]</r> 
    <c>25°C</c> 
    <chunk>ΔHM = 1,84 cal/mol Misch. = 7,7 J/mol Misch.</chunk> 

使用XPath表達式:/系統/系統/塊[位置()< 4]〜選擇前3個塊元素並用s標籤包圍它們。然而,當我在重構命令運行此我得到這個:

<system> 
    <n>1057</n> 
    <s><chunk>X1</chunk></s> 
    <s><chunk>C6HF5</chunk></s> 
    <s><chunk>Pentafluorbenzol</chunk></s> 

    <chunk>C6H2F41,2,3,5-Tetrafluorbenzol</chunk> 
    <chunk>Äquimolare Mischung: </chunk> 
    <chunk/> 
    <r>[F5]</r> 
    <c>25°C</c> 
    <chunk>ΔHM = 1,84 cal/mol Misch. = 7,7 J/mol Misch.</chunk> 

凡選擇適當的塊,但單獨包裝每個塊。如果您對如何將s標籤中的所有元素進行分組有所建議,請告訴我們。或者,如果我甚至不應該使用氧氣xml來實現這一點。

+1

您可以在XSLT 3.0樣式表中使用'來執行這個轉換。 –

回答

0

oXygen沒有爲您需要的默認XML重構操作。但是,如果您願意,您可以定義自己的操作(請參閱oXygen user's guide)。您可以使用Martin Honnen的XSL(您的文章的第一條評論)作爲操作腳本。