2014-06-26 42 views
3

我有興趣創建儘可能簡單但不簡單的Web應用程序。我的意思是,在我看來,我可以(*應該能夠*)創建一個代表我應用程序對象的XML文檔,使用CSS作爲「表示層」,並使用Javascript來操作對象。我所說的爲什麼XML不打算用作演示文稿語言?

部分是,它似乎對我來說,HTML混淆與演示格式混合對象的應用程序,這不就是CSS的地步? - HTML/XML:什麼數據,CSS:如何呈現數據,(JS:如何操作數據)

我*可以*使用XLST將XML轉換爲XHTML,但是JS必須是爲XHTML(表示元素)編碼,而不是XML(數據對象),這增加了不必要的複雜性。

我從程序員的角度來,與使用的設計原理,例如從數據(HTML/XML VS CSS)分離的呈現和麪向對象的編程的願望。說現在的HTML和CSS有必要「定義」表示層是否合理?

評論我要找的是關於如何正確地代碼,而不是「修補」現行標準。

這裏是一個例子。我可以這樣寫:

HTML/XHTML:

<ul class="folderTree"> 
    <li class="fTreeItem"><img /><span class="fTreeItemName">Directory</span> 
     <ul class="fTreeItemContents"> 
      ... 
     </ul> 
    </li> 
    ... 
</ul> 

...但設計原則,可以更好地滿足,如果我能做到這一點:

<folderTree> 
    <item><img /><name>Directory</name> 
     <folderTree> 
      ... 
     </folderTree> 
    </item> 
</folderTree> 

,幷包括以下CSS:

folderTree { display: block; } 
folderTree item { display: list-item; } 
folderTree name { display: inline; } 

這似乎是我提供數據的正確方法。你不同意嗎?請解釋...

編輯:我的問題的基礎建立在一個),用戶自定義標籤不能在HTML/XHTML中使用的事實,和b)的JavaScript並不意味着與XML使用。

編輯2:另外,我不完全熟悉的命名空間如何將多個文檔中進行處理。因此,如果有人可以通過使用XHTML文檔並使用其他命名空間包括我的XML代碼/標籤來實現我的目標...

+2

XHTML是XML,因此XML可以用作演示語言。 – user2864740

+2

你應該看看谷歌[聚合物項目。](http://www.polymer-project.org/) – Pointy

+0

事實上'a'在你編輯並不完全正確。例如,如果您使用的是angularjs,那麼您使用的標記將會非常好,您將擁有一個指令,該指令可以爲子標記處理具有子指令的folderTree。它可能不會在HTML驗證器中驗證,但它將適用於所有現代瀏覽器(和IE8 +)*(術語可能有點偏離,相對較新的angularjs)* –

回答

0

除了即將推出的web componentscurrent libraries,您幾乎可以使用任何您想要的元素。然後你可以將樣式表應用到它,它會顯示正常。

<tralala>Hello World!</tralala> 

<style> 
tralala { 
    display: block; 
} 
</style> 

查看當前Web組件庫,並可能使用XSL修改數據以匹配Web組件。

0

來自W3C的design goals的XML是:

  1. XML應該可以通過互聯網直接地使用。
  2. XML將支持各種各樣的應用程序。
  3. XML應與SGML兼容。
  4. 應該很容易編寫處理XML文檔的程序。
  5. XML中可選功能的數量應保持爲絕對最小值,理想情況下爲零。
  6. XML文檔應該清晰易讀並且合理清晰。
  7. 應該儘快準備XML設計。
  8. XML的設計應該是正式和簡潔的。
  9. XML文檔應該很容易創建。
  10. XML標記中的標記性非常重要。

XML首先是關於格式良好的XML文檔,然後將有效XML文檔轉換爲特定的XML應用程序定義,即XML文檔對於XHTML版本1.0是有效的。

還有的XML應用程序定義千元那裏,較不可能在一個通用的方式來可視化數據,在不可能的。

2

HTML具有定義含義的元素和屬性。它們被衆多客戶所理解,包括常見的可視網頁瀏覽器,搜索引擎索引機器人和屏幕閱讀器。它有一些遺留的表示屬性和元素遺留,但它們大多被刪除或標記爲避免。

您的自定義XML語言可能有元素和具有比在HTML更具體的含義屬性,但它們不會被客戶理解的含義。您可以使用樣式表爲視覺用戶處理該問題,但不會爲搜索引擎,屏幕閱讀器和其他用戶提供所有這一切。

2

我假設你想在瀏覽器中運行你的應用程序。瀏覽器用於呈現UI的語言是HTML/XHTML。如果您想要定義自己的語言來定義UI,則需要將其翻譯爲瀏覽器可以理解的內容。這可以做JIT或頁面加載。

我同意你運行XSLT使javascript部分更復雜。但是你可以做的是在JavaScript中編寫一個「解釋器」(或「渲染引擎」)。因此,您的應用程序將用XML + CSS + JavaScript編寫,而不是在裸瀏覽器上運行它 - 您將使用一個庫,它將使用「HTML指令」呈現您的XML-UI。

它可以作爲XML節點替換爲簡單的,所以,當你在你的XML說 - 它會在HTML中產生。根據您將javascript連接到演示文稿定義的方式,您需要提供某種類型的適配器以用於JavaScript訪問。例如,您可以「攔截」jQuery $(...)調用並將$(「folderTree」)替換爲$(「div.folderTree」)。但是,如果您已經使用適當的頁面對象訪問您的UI元素,那麼可以將翻譯邏輯封裝在此頁面對象中。即PageObject類可以足夠聰明地知道,當你要求treeFolder節點時,它需要尋找$(「div.treeFolder」)而不是$(「treeFolder」)。

看看angular.js's directives靈感。