2009-04-01 12 views
1

Ich mag ein MathML Dokument aus einem Ausdrucksbaum mit Linq to XML erstellen, aber ich kann nicht herausfinden, wie die MathML XML-Entitäten verwenden (wie & ApplyFunction und & InvisibleTimes): Wenn ich versuche, direkt ein XElementLinq to XML und benutzerdefinierte XML-Entitäten

XElement xe = new XElement("mo", "&InvisibleTimes"); 

es justs entkommt die Et-Zeichen zu erzeugen (was nicht gut ist). Ich habe auch versucht XElement.Parse

XElement xe = new XElement.Parse("<mo>&InvisibleTimes</mo>"); 

aber es funktioniert nicht mit einem System.XmlException zu verwenden: Verweis auf nicht deklarierter Entität ‚InvisibleTimes‘ Wie kann ich erklären, das Unternehmen oder ignorieren die Kontrollen?

Antwort

1

Wie andere darauf hingewiesen haben, gibt es keinen direkten Weg, dies zu tun.

Das heißt, Sie können versuchen, den entsprechenden Unicode Carakter zu verwenden. Nach http://www.w3.org/TR/MathML2/mmlalias.html, für ApplyFunction ist es 02061, neuen XElement versuchen ("mo", "\ u02061")

0

Ich weiß nicht, über XDocument, aber Sie können es tun, mit XmlDocument:

XmlDocument doc = new XmlDocument(); 
var entity = doc.CreateEntityReference("InvisibleTimes"); 
XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("xml")); 
var el = root.AppendChild(doc.CreateElement("mo")).AppendChild(entity); 
string s = doc.OuterXml; 
0

Sie zu xml müssen die Namen kodieren, weil ‚&‘ ein Sonderzeichen ist.

Also statt

XElement xe = new XElement("mo", "&InvisibleTimes"); 

versuchen

XElement xe = new XElement("mo", "&amp;InvisibleTimes"); 
+2

(I bearbeiten die Formatierung zeigen) Das sieht eigentlich alles noch schlimmer machen: & amp; InvisibleTimes

1

Nach this thread, LINQ to XML nicht Entitätsverweise umfassen: es keinen Knotentyp für sie hat. Es wird nur erweitert, wenn eine Datei geladen wird, und danach haben Sie nur "normale" Zeichen.

0

Ich denke, Sie brauchen eine DTD zu definieren <mo> & InvisibleTimes; </mo >.

MathML 2.0 bietet eine XHTML + MathML DTD.