0
我有幾個需要生成Ruby代碼的XML文件。我的XML結構如下:XSLT:將嵌套的XML轉換爲Ruby代碼
<acronym_list>
xmlns="http://www.example.com/xsds"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/xsds
http://www.example.com/xsds/acronyms.xsd">
<item>
<metadata>
<release>...</release>
<id>...</id>
<checkdigit>...<checkdigit>
<status>...</status>
<date_added>...</date_added>
<date_modified>...</date_modified>
<language>...</language>
<license_url>...</license_url>
</metadata>
<info>
<name>...</name>
</info>
</item>
</acronym_list>
在這種情況下,我們正在討論縮寫詞。我的列表中每個縮寫詞都重複item
元素(及其子元素)。我還有幾個文件與info
元素具有更多子元素的結構相似。
的Ruby代碼,我試圖擺脫會是什麼樣子:
Module acronym_list
def self.included(other)
include SAXMachine
SAXMachine.configure(other) do |c|
c.element :metadata, :class => metadata
c.element :info, :class => info
end
end
class metadata
include SAXMachine
c.element :release
c.element :id
c.element :checkdigit
c.element :status
c.element :date_added
c.element :date_modified
c.element :language
c.element :license_url
end
class info
include SAXMachine
c.element :name
end
end
同樣的模式遵循的是我試圖解析其他XML文件。我已經設法使第一部分使用模塊聲明,但我不知道足夠的XSLT來完成其餘部分。
有人能幫我解決這個問題嗎?
這太棒了。謝謝!如果我想對項目元素進行通用處理(即,我有一個文件包含acronym_item,另一個文件包含asset_item),我可以採用類似的方法處理模式,就像上面所做的一樣? –
那麼在你發佈的示例中有一個'acronym_list'元素,但沒有'acronym_item',所以我不確定'asset_item'會出現在哪裏。目前還不清楚你想要哪個輸出。如果在所需輸出結構方面沒有任何變化,那麼簡單地提供模板匹配模式的列舉就足夠了。 ' ... xsl:template>'。模式有助於多次處理節點,即第一次以一種方式使用第一模式以一種方式輸出,第二次以第二種方式輸出 –