【问题标题】:Missing NameSpace Information In XML file using EXIficient使用 EXIficient 在 XML 文件中缺少名称空间信息
【发布时间】:2016-12-13 00:01:23
【问题描述】:

我正在使用EXIficient 将 XML 数据转换为 EXI 并返回 XML。在这里,我使用他们的EXIficientDemo class。示例代码:

EXIficientDemo sample = new EXIficientDemo();
sample.parseAndProofFileLocations("FilePath");
sample.codeSchemaLess();

它首先将 xml 文件转换为 EXI,然后再转换回 XML,当它从先前生成的 EXI 文件生成 XML 时,它会丢失一些有关 Namespace 的信息。

实际的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<tt xml:lang="ja" xmlns="http://www.w3.org/ns/ttml"
 xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<body>
    <div>
      <p xml:id="s1">
         <span tts:origin="somethings">somethings</span>
      </p>      
   </div>
</body>

EXIficient 生成的 XML 文件

<?xml version="1.0" encoding="UTF-8"?>
<ns3:tt xmlns:ns3="http://www.w3.org/ns/ttml" 
xml:lang="ja"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<ns3:body><ns3:div>
<ns3:p xml:id="s1">
<ns3:span xmlns:ns4="http://www.w3.org/ns/ttml#styling"
ns4:origin="somethings">somethings</ns3:span>
</ns3:p>
</ns3:div></ns3:body>

在生成的XML文件中,缺少xmlns:tts="http://www.w3.org/ns/ttml#styling"

如何解决这个问题?如果可以,请帮帮我。

【问题讨论】:

    标签: java xml exi exificient


    【解决方案1】:

    EXIficient 可能会抑制未使用的命名空间。您的示例未显示对 ttm 命名空间的任何使用。

    如您所见,它也没有保留 ttml 命名空间的命名空间前缀(更改为 ns3)。如果未使用 ttml#metadata 命名空间,则生成的 XML 完全有效。

    更新

    在更新后的问题中,span 元素的 origin 属性使用了命名空间 ttml#styling,命名空间保留在重建的 XML 中,但已移至 span 元素。

    这仍然是一个非常有效的 XML 文档。

    命名空间声明 (xmlns) 可以出现在 XML 文档中的任何位置,并适用于它出现的元素和所有子元素(除非被覆盖,这是非常不寻常的)。

    可以在不同的元素上多次声明相同的命名空间。为了简单和/或优化,通常在根元素上预先声明所有命名空间,使用不同的前缀,但不是必须这样做。

    【讨论】:

    • 编辑问题。现在请看一下。在这里,使用ttml#styling,但仍然不包含
    【解决方案2】:

    我偶然读到了这个问题,不幸的是,我来晚了。 以防万一人们仍在为此苦苦挣扎,想知道他们能做什么。

    正如人们指出的那样,EXIficient 在命名空间处理方面表现得很好。

    话虽如此,EXI 规范允许保留前缀和命名空间(参见Preserve Options)。

    在 EXIficient 中可以相应地设置这些选项, 例如,

    EXIFactory.getFidelityOptions().setFidelity(FidelityOptions.FEATURE_PREFIX, true);
    

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 1970-01-01
      • 2016-01-31
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多