2011-02-25 59 views
1

我有一個包含一個點,我想HAML保留標籤(。):在HAML點XML標籤

Haml的:

%text 
%text.resource 
    ... 

我想Haml的擴大到:

<text> 
    <text.resource>... 
    </text.resource> 
<text> 

但它一直在做:

<text> 
    <text class="resource">... 
    <text> 
<text> 

在Haml有沒有簡單的方法來「逃避」「階級」擴張?

+0

如果這是在rails中,您可能可以使用content_for方法來生成您的內容... – 2011-02-25 01:06:33

+0

也許您應該考慮使用其他模板引擎而不是HAML(例如RXML)來生成XML。 HAML並不適合它。 – 2011-02-25 06:41:37

回答

0

HAML用於生成各種形式的HTML,但您可以通過創造性地誘騙它來生成其他內容。把你想回到什麼:

<text> 
<text.resource>... 
</text.resource> 
<text> 

會的工作,因爲如果HAML看到不隨其保留字符一個開始,它會輸出它是一條線。你不能縮進,否則會發瘋。

the docs

注意,HTML標籤是經由未經修改通過了爲好。如果你有一些HTML你不想轉換成Haml,或者你正在逐行轉換一個文件,那麼你可以直接將它包含進去。例如:

%p 
    <div id="blah">Blah!</div> 

被編譯爲:

<p> 
    <div id="blah">Blah!</div> 
</p> 

你可以這樣做:

<text> 
= " <text.resource>..." 
= " </text.resource>" 
<text> 

如果你堅持縮進:

>> <text> 
>>  <text.resource>... 
>>  </text.resource> 
>> <text> 

編輯:

的OP說:

我的問題是,elypsis(...)意味着我必須在那裏增加更多的HAML代碼(一串XML標籤的那會是「孩子」的,因此我需要在評論後「縮進」行...

XML不關心縮進;縮進是一種僅用於人眼的美學。我更擔心的是在功能和語法上是否正確。如果您絕對必須擁有「漂亮」的XML,那麼請考慮通過設置了xml標誌的xmllinttidy來運行HAML輸出。

或者,因爲您開始濫用HAML而使用類似ERB和/或Erubis這種更自由的形式而不太關注語法的東西,或者通過print和生成XML並生成XML聲明。如果你堅持使用HAML並進行縮進,那麼我建議與HAML開發人員協商,看看他們是否有建議。可能有一個HAML過濾器可能會被使用,或者其他方式強制內聯壓縮級別。

作爲軟件開發人員,我們的建議已經很長時間,並且出現過很多次,我們的建議可能會忽略功能性的最終目標,並轉而進行一些犛牛剃毛運動擔心沒有完成任何事情的細節。除非每個縮進空間都是神聖的規範,否則我會擔心更多關於獲取正確的XML並繼續前進,然後再返回到它並查看它是否可以調整到完美狀態。

+0

謝謝你的時間,我遇到的問題是,elypsis(...)意味着我必須在那裏添加更多的haml代碼(一堆xml標記,它們是的「子項」,因此我需要在評論後「縮進」行... – eblumenfeld 2011-02-25 12:45:39

+0

@eblumenfeld,請參閱添加的編輯 – 2011-02-25 16:46:44

+0

再次感謝您的時間,如果它不起作用,您是正確的嘗試去erb,我試圖瞭解我是否可以與開發人員取得聯繫,但是在網站中沒有他們的聯繫信息,我想用haml來解決將來的可維護性問題,但這個唯一的問題是一個難題,再次感謝您的建議。 – eblumenfeld 2011-02-26 15:45:17