提问人:CodeAndCats 提问时间:1/16/2009 最后编辑:LarsHCodeAndCats 更新时间:9/12/2015 访问量:69911
XML 属性值中是否允许换行符?
Are line breaks in XML attribute values allowed?
问:
我意识到它既不优雅也不理想,但是是否允许(在格式正确的 XML 中)XML 元素中的属性值跨越多行?
例如:
<some-xml-element value="this value goes over....
multiple lines!" />
是的,我意识到有更好的写法。我个人会这样写:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
艺术
<some-xml-element value="this value goes over.... " />
但是我们有自己的XML解析器,我想知道第一个示例是否允许在格式正确的XML中使用。
答:
2赞
Reji
1/16/2009
#1
是的,第一个示例是有效的。
110赞
derobert
1/16/2009
#2
http://www.w3.org/TR/REC-xml/#NT-AttValue
似乎说除了 、 和你的分隔符 ( 或 ) 之外的所有内容都可以。所以换行符也应该如此。<
&
'
"
评论
6赞
stivlo
7/13/2011
在属性中换行是一个好主意的一个例子是 Spring 配置中的 xsi:schemaLocation 属性,它可以包含多个由空格分隔的 URL,因此比屏幕宽度长得多。
3赞
n611x007
4/22/2015
它是有效的,但是解析器会将它们规范化为空间,正如 Jan Cetkovsky 所说。
0赞
Nullius
3/17/2016
井。。。我在 XSLT 文档中使用多行长 if/when 测试语句。
4赞
Łukasz Wiatrak
11/15/2011
#3
仅限 .NET: 如果不确定目标字符串是否为有效的 xml 属性(并通过代码提供此属性的值),则始终可以使用 SecurityElement.Escape 函数对无效字符进行转义。
根据此函数的描述,唯一无效的字符是:
<
, , , ,>
&
'
"
这意味着(正如我的前任所写的),这条新线应该是可以的。
55赞
Jan Cetkovsky
11/19/2011
#4
这是允许的,但是根据 W3C 的建议,您的 XML 解析器应将所有空格字符规范化为空格 (0x20) - 因此您的示例的输出会有所不同(您应该在输出中为“ “,但在第一种情况下只有空格)。
评论