【问题标题】:How to include [ in xml element name如何在 xml 元素名称中包含 [
【发布时间】:2010-10-13 00:49:28
【问题描述】:

有没有办法在 xml 元素名称中包含 [ 字符?

例如

<AWSECommerceService.ItemSearch.ItemSearch.Request[0].SearchIndex>Electronics</AWSECommerceService.ItemSearch.ItemSearch.Request[0].SearchIndex>

使用它的原因是在 SVG 中隐藏的请求输入值是使用名称指定请求键的 xml 元素指定的。

例如:

  <xforms:model id="form1">
<xforms:instance>
    <q>toyota</q>
    </xforms:instance>
<xforms:submission id="submit1" xforms:method="get" xforms:action="http://www.google.ca/search" />

将导致对http://www.google.ca/search?q=toyota的请求

【问题讨论】:

    标签: xml encoding svg


    【解决方案1】:

    您不能 - 它不是 XML 元素名称的有效部分。

    来自the spec

    ASCII 符号和标点符号 标记,以及相当大的一组 Unicode 符号字符,是 从名称中排除,因为它们是 作为上下文中的分隔符更有用 其中 XML 名称在 XML 之外使用 文件;提供这个组给 这些上下文硬保证 什么不能是 XML 名称的一部分。

    接下来是 BNF 以了解 允许的情况:

    NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] 
                      | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D]
                      | [#x37F-#x1FFF] | [#x200C-#x200D] 
                      | [#x2070-#x218F] | [#x2C00-#x2FEF] 
                      | [#x3001-#xD7FF] | [#xF900-#xFDCF] 
                      | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] 
    
    NameChar      ::= NameStartChar | "-" | "." | [0-9] | #xB7 
                      | [#x0300-#x036F]  | [#x203F-#x2040]
    
    Name          ::= NameStartChar (NameChar)*
    
    Names         ::= Name (#x20 Name)*
    
    Nmtoken       ::= (NameChar)+
    
    Nmtokens      ::= Nmtoken (#x20 Nmtoken)*
    

    【讨论】:

    • 感谢您的回答!这是 svg xforms 的一个严重限制,因为您可能需要名称中包含 [ 的请求参数,除了定义不绑定的 xforms 元素(xml 元素)之外,我找不到任何其他方法在请求中包含隐藏参数一个 UI 控件
    【解决方案2】:

    不可能。 XML spec 将元素名称定义为 NameStartChar 后跟 NameChars 并且两者都不包含方括号

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 2020-05-06
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多