4
我用SAX解析一個MathML表達式(雖然它的MathML可能不完全相關)。一個例子輸入字符串是用SAX解析並處理字符實體
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo>λ</mo>
</mrow>
</math>
爲了SAX解析器接受這個字符串,我擴大了一點:
<?xml version="1.0"?>
<!DOCTYPE doc_type [
<!ENTITY nbsp " ">
<!ENTITY amp "&">
]>
<body>
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo>λ</mo>
<mrow>
</math>
</body>
現在,當我運行這個SAX解析器,我得到一個例外:
[Fatal Error] :5:86: The entity "lambda" was referenced, but not declared.
org.xml.sax.SAXParseException: The entity "lambda" was referenced, but not
declared.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
但是,我知道如何解決這個問題。我只需添加這行字符串被解析:
<!ENTITY lambda "Λ">
這給了我
<?xml version="1.0"?>
<!DOCTYPE doc_type [
<!ENTITY nbsp " ">
<!ENTITY amp "&">
<!ENTITY lambda "Λ">
]>
<body>
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo>λ</mo>
<mrow>
</math>
</body>
現在,它解析就好了,謝謝你。
但是,問題在於我無法爲可能在MathML中使用的每個可能的字符實體(例如「part」,「notin」和「sum」)添加ENTITY聲明。
如何重寫此字符串以便可以解析可能包含的任何可能的字符實體?
請注意,結束標記必須爲'',否則無法解析,因爲它的格式不正確。 – Gunther 2011-06-11 10:13:09