35

我使用了一个名为Fritzing的程序来绘制一些基本的 Arduino 原理图,然后将输出导出为 SVG。这按预期工作,但后来我注意到 SVG 输出仅在某些浏览器中看起来不错,而在某些版本的 Firefox 中也不错。

由于 Fritzing 是一个开源应用程序,我认为我可以查看代码(也许会有所帮助)。

但现在回到问题上来,正确的 SVG 应该是什么样子?我可以使用 W3C 的哪个验证器来检查文件?

我尝试使用此页面上的验证器:http: //validator.w3.org/dev/tests/

但他们都抱怨了很多,尤其是关于 SVG 版本。验证者似乎喜欢 1.0 版和 1.1 版,但是当我查看此文件的顶部时,似乎使用的是1.2 版

这是有问题的文件的前三行(为了便于阅读而重新格式化):

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- Created with Fritzing (http://www.fritzing.org/) -->
<svg width="3.50927in"
     x="0in"
     version="1.2"
     y="0in"
     xmlns="http://www.w3.org/2000/svg"
     height="2.81713in"
     viewBox="0 0 252.667 202.833"
     baseProfile="tiny"
     xmlns:svg="http://www.w3.org/2000/svg">

我可以使用特定的 SVG 1.2 验证程序吗?

或者我应该尝试验证 SVG,就好像它是一个经典的 XML 文件一样?

(附带说明,Fritzing 似乎使用 Qt,所以如果有一些 QTest 我可以使用它可能会很有用。)

4

3 回答 3

24

您可以使用例如http://validator.nu。由于您的文件是独立的,请选择 xml 解析,将 RNG url 粘贴到架构文本字段中(您正在查找的架构 url 可以在相关规范中找到,在本例中为 SVG 1.2 Tiny:http ://www.w3.org /TR/SVGTiny12/relaxng/Tiny-1.2.rng)。

即使您的三行代码段也不是有效的 SVG 1.2 Tiny 内容(Tiny 中的 <svg> 元素上不允许有 x 和 y 属性)。您应该在某处添加指向文件的链接,否则很难说它应该是什么样子。

于 2012-09-24T08:24:14.557 回答
3

终端svgcheck中有一个 python 实用程序,它声称针对版本 1.2,如 draft-7996-bis 中所定义。一个有前途的实用程序,恕我直言。

SVG 检查程序。

pip install svgcheck
svgcheck ~/path/to/mysvgfile.svg

具有适当标准的 svg 文件将给出如下内容:

$ svgcheck alert-circle.svg
Parsing file alert-circle.svg
INFO: File conforms to SVG requirements.
  • 确保您已pip正确安装和配置 python
于 2020-09-04T08:00:45.977 回答
1

对于SVG Tiny 1.2 Portable/Secure (SVG P/S) 子集,例如用于消息识别(BIMI) 的品牌指标,请参阅使用 RNC 模式验证 BIMI SVG 图像。它展示了如何在命令行上执行Relax NG Compact (RNC) XML 模式验证。

pip3 install jingtrang
wget 'https://bimigroup.org/resources/SVG_PS-latest.rnc.txt'
pyjing -c SVG_PS-latest.rnc.txt my-image.svg

对于我的用例,使用 转换为 SVG Tiny 1.2 的 PNG 标识png2svg,这是输出。

my-image.svg:1:159: error: value of attribute "baseProfile" is invalid; must be equal to "tiny-ps"
my-image.svg:1:174: error: element "g" not allowed yet; missing required element "title"

通过编辑baseProfile值并添加<title>A very nice image title</title>.

于 2021-09-27T12:07:07.143 回答