首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素“ref: not”的前缀"ref“不绑定

元素“ref: not”的前缀"ref“不绑定
EN

Stack Overflow用户
提问于 2017-11-23 09:45:14
回答 3查看 1K关注 0票数 1

在试图转换以下XML时,我遇到了错误:

代码语言:javascript
复制
<triggers>
<add status="Success">
    <from>
        <ref:setting name = ".technicalContactEmail"/>
    </from>
    <recipients>
        <ref:maintenanceJob out="creatorEmail"/>
    </recipients>
    <subject> Your download has been prepared</subject>
    <body>
        <ref:downloadOrderInfo out="downloadsUrl" store="@downloadsUrl"/>
        <div style="color: #5C9731; font-size: 18pt; font-family: tahoma; margin-bottom: 15px;">    Your <ref:downloadOrderInfo out="fileNameLabel"/> (<ref:downloadOrderInfo out="fileName"/>) has been prepared. Please go to <a href="@downloadsUrl">My downloads page</a> in XXXX to download it.</div>
        <br/>
        <div>***This is an automatically generated email, please do not reply to this message. ***</div>
    </body>
</add>
<add status="PartiallyFailed, Failed">
    <from>
        <ref:setting name = ".technicalContactEmail"/>
    </from>
    <recipients>
        <ref:maintenanceJob out="creatorEmail"/>
    </recipients>
    <subject> Error when preparing download</subject>
    <body>
        <ref:downloadOrderInfo out="downloadsUrl" store="@downloadsUrl"/>
        <div style="color: #5C9731; font-size: 18pt; font-family: tahoma; margin-bottom: 15px;">    An error occurred while preparing the <ref:downloadOrderInfo out="fileNameLabel"/>: <ref:downloadOrderInfo out="fileName"/>. You can retry and request the download again on the <a href="@downloadsUrl">My downloads page</a> in XXXX.</div>
        <br/>
        <div>***This is an automatically generated email, please do not reply to this message. ***</div>
    </body>
</add>

使用这个XLST脚本:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="node() | @*">
<xsl:copy>
    <xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>

 <xsl:template match="from"/>

</xsl:stylesheet>

目标是从XML标记中删除“,但我遇到了错误,元素”ref:“的前缀”"ref“不绑定。

请注意,我不能只修改XSLT的XML条目。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-23 12:07:45

如果源XML包含名称空间,则必须指定它们,例如在根标记中。否则,这样的XML具有不正确的结构。

在您的例子中有一个名称空间- ref,所以将您的triggers标记更改为。

代码语言:javascript
复制
<triggers xmlns:ref="dummy.com">

(或其他骨灰盒)就可以了。

备注:如果您的XSLT脚本包含对源XML中的任何名称空间的引用,则必须在XSLT中指定此命名空间。

票数 0
EN

Stack Overflow用户

发布于 2017-11-23 15:36:43

XSLT不会帮助您转换格式不是很好的XML。

当您得到糟糕的XML时,您的第一个想法应该始终是,这是从哪里来的,我们可以修复源以在将来生成好的XML吗?

如果你不能修好它,你应该担心的是,你是依赖供应商谁是交付有缺陷的产品。

如果最坏的情况发生在最坏的情况下,您可以考虑修复不好的XML。修复策略取决于腐败的规律和可预见性,以及修复行动是否合适。不幸的是,您可能不得不在修复工作中使用非XML工具(例如Perl脚本),因为大多数XML工具只处理格式良好的XML。

有些修复可以使用诸如HTML或validator.nu之类的工具进行。我不知道在这种情况下他们是否会帮你。

在这种情况下,我可能会通过添加一行来进行修复。

代码语言:javascript
复制
<wrapper xmlns:ref="something">

在顶部和一个对应的

代码语言:javascript
复制
</wrapper> 

在底部,然后在剩下的工作中使用XSLT。

票数 0
EN

Stack Overflow用户

发布于 2017-11-24 03:44:24

我还在Valdi_Bo建议的基础上在XSLT上添加了这段代码,现在它可以工作了。我向管理层建议,我们需要在XML上添加引用。谢谢。

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ref="dummy.com">  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47452249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档