Xml 如何在SVG文件中嵌入任意文本/数据?

Xml 如何在SVG文件中嵌入任意文本/数据?,xml,svg,tikz,Xml,Svg,Tikz,我用tikz和pdflatex创建了一个图表,并用inkscape将其转换为SVG。我想将latex代码嵌入到.svg文件中,以便其他人能够重新生成/修改它。问题是tikz代码包含大量的--(用于划线),这使得无法将代码作为XML注释添加到SVG(请参阅) 我曾考虑将其添加为CDATA,但迄今为止失败(即未验证它) 以下是Carlo Cannas建议的MWE: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg

我用tikz和pdflatex创建了一个图表,并用inkscape将其转换为SVG。我想将latex代码嵌入到.svg文件中,以便其他人能够重新生成/修改它。问题是tikz代码包含大量的
--
(用于划线),这使得无法将代码作为XML注释添加到SVG(请参阅)

我曾考虑将其添加为CDATA,但迄今为止失败(即未验证它)

以下是Carlo Cannas建议的MWE:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   id="svg2"
   version="1.1">
    <metadata>
        <annotation xmlns="http://www.w3.org/1998/Math/MathML" encoding="TeX">
            blah --
        </annotation>
    </metadata>
</svg>

废话--
您可以将其作为普通文本或使用其他元素包含在元素中

我建议将代码包含在MathML元素中,并使用适当的
encoding
属性。MathML命名空间URI是
http://www.w3.org/1998/Math/MathML
,因此最后的代码如下:

<svg xmlns="[...SVG namespace URI here...]">
    <metadata>
        <annotation xmlns="http://www.w3.org/1998/Math/MathML" encoding="TeX">
            <!-- TeX code here (obviously not in this comment, remove this whole line and write it in a CDATA section or as character data, as you wish) -->
        </annotation>
    </metadata>
</svg>


谢谢。验证器给我的
MathML元素注释在此上下文中不允许作为SVG元素元数据的子元素。
但是(请参见编辑)@stefanct这是因为验证器正在尝试验证外部名称空间元素。如果您尝试验证规范中的示例,您将得到类似的错误。但是,不要担心:即使验证器给了您这些错误,您的文档也没有问题。是的,我认为您是对的。错误信息似乎是无可争议的…:)谢谢