有人可以請解釋爲什麼兩個報價行是必要的 <!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN" "http://www.w3.org/TR/speech-grammar/grammar.dtd">
?這是來自官方SRGS(http://www.w3.org/TR/speech-grammar/)文件,第2.7節。人們會認爲只是後面的引用行注意到dtd的位置就夠了。我懷疑這與用英文指定語言有關,但文件沒有解釋這一點。謝謝。注意DTD在語音語法xml(SRGS)
回答
如果XML文檔應該對DTD有效,則只有後一個字符串(系統標識符)必須存在。
第一個帶引號的字符串是公共標識符,它是可選的。它用於通過名稱而不是物理地址來唯一標識DTD(或其他外部標識符)。通常可以認爲公共標識符比http:
或file:
URL更穩定。即使系統標識符錯誤或互聯網訪問停止(例如),也可以找到DTD。
這將是確定只使用
<!DOCTYPE grammar SYSTEM "http://www.w3.org/TR/speech-grammar/grammar.dtd">
注意使用SYSTEM
關鍵字在這種情況下。
另請參閱http://www.xml.com/axml/target.html#sec-external-ent。
關於W3C承載的DTD的使用,您可能對http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic/感興趣。
實際上在SGML(這是XML的基礎)URL(= SYSTEM標識符)與PUBLIC標識符的可選方式相同。如果存在關鍵字PUBLIC
,則應始終使用與您的案例中給定的正式公共標識符(FPI)"-//W3C//DTD GRAMMAR 1.0//EN"
相匹配的內置DTD(來自目錄)進行文檔驗證。在SGML中,PUBLIC標識符之後可以跟隨一個系統標識符,該標識符應被視爲關於所使用的DTD的暗示。 在XML這已更改,以便公共標識符存在,其必須後跟一個系統標識符;但這並不會改變這些標識符的邏輯或目的。
公共標識符表示這個文檔遵循的規範,所以實際上它告訴整個文檔中使用的語法,所以它以一種與XML中的名稱空間相同的目的服務於當前。公共標識符的形式通常遵循共同的結構,因此包含語言代碼。該代碼僅暗示所引用的規範是用什麼(自然/人類)語言編寫的,並不意味着文檔本身將包含使用該語言。在您的情況下,DOCTYPE確實而不是意味着您的文檔應該使用,參考或是關於英語。
而不是PUBLIC
DOCTYPE聲明還可以包含關鍵字SYSTEM
這意味着DTD應作爲系統特定的方式檢索。 SYSTEM
後面只有一個URL或文件路徑。
要清楚的是,如果還有公共標識符,則系統標識符不是可選的。 (http://www.w3.org/TR/xml/#NT-ExternalID)系統標識符是可選的唯一方法是,如果沒有公共標識符,並且所有內容都在內部子集中聲明,如:<<! DOCTYPE語法[012]> –
非常感謝,@ jasso和@DevNull。您的解釋和鏈接確實幫助我更好地瞭解這些類型案例中的DTD使用情況。 – nlper
@DevNull呵呵,我被困在過去。在SGML中,如果存在公共標識符,系統標識符是可選的,並且我認爲這對XML沒有改變。感謝您指出這一點,我會解決我的答案。但是與你寫的不同的是,即使沒有內部的DTD子集,系統和公共標識符也可以省略,因爲[它也是可選的](http://www.w3.org/TR/xml/#NT-doctypedecl) HTML5 doctype'<!DOCTYPE html>'是XML和SGML中的有效doctype。 PS對不起,我沒有登錄到Stackover兩個月。 – jasso
- 1. Microsoft語音識別SRGS
- 2. 哪個XML編輯器用於語音識別語法規範(SRGS)
- 3. 使用.net語音API在SRGS語法中引用外部規則時出錯
- 4. 如何更新C#中的srgs語法
- 5. 我可以使用SRGS語法和語音識別在越南語演講中開發我的軟件
- 6. MathML DTD語法的解釋
- 7. 在srgs語法中結合自由格式的聽寫和語義
- 8. 如何在語音XML中將語音寫入文本?
- 9. 在SRGS語法中使用VoiceXML內置類型
- 10. Microsoft語音無法識別語音
- 11. C#語音語音
- 12. 語音XML塊表達式
- 13. AT&T XML語音識別
- 14. 語法意義
- 15. 解析WordPress XML,斜槓:註釋語法?
- 16. 語音中外部語法的結構xml
- 17. DTD語法 - 允許子元素或PCDATA
- 18. 這個dtd語法有什麼問題?
- 19. 在後臺調用語音意圖
- 20. 將通用佔位符添加到SRGS語法
- 21. 在語音API中更改語音語音
- 22. 在語音中註冊UIGestureRecognizer操作
- 23. 法語口音不
- 24. 在語音通話中錄製語音
- 25. 語音文字到語音
- 26. 語音/語音識別 - PhoneGap
- 27. 語音/語音到文本
- 28. Google語音API語音
- 29. 西班牙語語音(語音)識別
- 30. 網絡音頻API意外語法標記,聲音不會玩
謝謝@ mzjn,爲您的深入解釋和非常有用的鏈接。 – nlper