2016-03-28 21 views
0

XML,JSON和YAML似乎最適合他們的設計。有沒有辦法允許腳本編寫,或者至少從這些格式中調用函數,返回字符串值並更改數據中元素的值。帶腳本選項的數據交換格式

長話短說:是否有任何數據交換格式允許通過傳遞參數來編寫腳本或調用函數?

如果沒有,那麼在這些格式中可以使用可行/標準語法來在運行時調用函數嗎?

XML實例:<Element>$Method("My name is Jeff");<Element>

+0

似乎對我來說是一個奇怪的問題,你可以看看xsl轉換來轉換xml。你可以在變換中調用一些函數。 – Derek

回答

1

回答你的第一個問題是沒有。第二個「是的,XML和YAML的語法是合理的」

這些是數據格式,這是他們指定的內容,XML和YAML比JSON功能強大得多。即使JSON是編程語言不可知的,除此之外,規範中還沒有關於如何定義可以評估的函數的方法。

當然,很容易在XML和YAML中標記某些東西(每個都以自己特定的方式)。您只需編寫一個程序,用於在解析過程中評估標記並創建輸出(從字符串/標量/複雜類型)。 這會立即回答你似乎並沒有問過自己的問題:「被評估的字符串是什麼語言的字符串?」,答案是:「你在程序中使用的任何腳本語言來評估標記的數據「

從python YAML分析器調用python解釋器來執行評估是微不足道的。從已編譯的編程語言中,您必須調用腳本擴展,或者將評估程序構建到您的程序中。你當然也可以通過編譯和動態加載來評估,但這可能比使用現有的可編寫腳本語言更難。

您的示例似乎使用基於某種模式的值的解釋(從$開始,在字符串中的某處具有$)。這是這樣做的錯誤方式,因爲您必須分析每個字符串並提供一些轉義機制來編寫實際的$。使用標記/屬性來實際告訴解析器某些需要編制的特殊需求會好得多。

+0

謝謝安森,這幾乎爲我澄清這一切。 – AmatuerDev