【问题标题】:Explicitly show default namespace on element in output在输出中的元素上显式显示默认命名空间
【发布时间】:2018-10-12 14:03:04
【问题描述】:

我需要在输出中显式显示一个特定元素的默认命名空间,而不是根。在我当前的解决方案中,默认命名空间显示在根节点上。

在我的 XSLT 中,我已将命名空间添加到需要它的节点,但它没有显示在输出中。

<MessageParts xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">

此命名空间与根相同,因此不会显示在输出中。有没有办法覆盖这个功能,所以它仍然会显示?

【问题讨论】:

  • 嗯,为什么?这表明 Schema 使用限定节点,这意味着命名空间不应包含在任何后代元素中,因为它是从根继承的。
  • 是的,没错,但客户仍然希望命名空间显示在元素上。该模式确实使用了合格的节点,因为客户还希望从元素中删除名称空间前缀。如果无法做到这一点,我会通知客户。

标签: xml xslt namespaces biztalk


【解决方案1】:

无法强制 XSLT 序列化程序输出冗余名称空间声明。序列化规则的一般思想是,如果在解析后应用程序看不到区别,那么就没有必要担心它们。例如,这也意味着您无法控制元素上的属性顺序。

从技术上讲,在 XSLT 1.0 中,您也无法控制名称空间前缀的选择,但实际上所有已知的 XSLT 处理器都尊重您选择的前缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2013-12-04
    • 2015-02-11
    • 2012-05-19
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多