我设计了一个xml架构来解析传入的xml文档。接收位置从2个feed获取xml文档,其中一个拼写错误的文档中的节点,“Roookie”而不是“Rookie”,有没有办法让我现有的xsd解析这个文档?
答案 0 :(得分:2)
你可能会预处理错误的XML文件,就像使用这个简单的XSL样式表一样:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>
<xsl:template match="Roookie">
<Rookie>
<xsl:apply-templates select="@*|node()" />
</Rookie>
</xsl:template>
<xsl:template match="@*|node()" name="defaultRule">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
您需要替换文档中的元素或修改xsd以使用新的文档格式。
答案 2 :(得分:0)
只需修改您的架构以接受2个节点(Rookie或Roookie)之间的选择,而不仅仅是1个名为Rookie的节点。两个节点都具有相同的类型。 当然,如果Roo(o)kie具有复杂的内容,您将需要为此内容声明一个复杂类型,以避免重复2个元素的整个结构。
答案 3 :(得分:0)
这里的onyl答案是修改坏消息。 xsd是一份合同,应该通过提交系统来遵守。如果您对提交系统没有这种控制权,我建议使用新名称制作第二个模式,并使其适应拼写错误。我会为消息中的每个错误开始更改合同/ xsd,这会增加复杂性并降低可维护性。