首页 > 解决方案 > Azure 数据工厂中的 XML 验证

问题描述

我正在尝试在 Azure 数据工厂复制活动中使用 XSD 验证(以 XML 作为源)。我有一个外部 XSD 文件。我也在尝试了解如何在 Azure 数据工厂中使用它。在复制活动中,验证类型部分下有两个选项 XSD 和 DTD。但是,它没有任何方法可以将任何外部文件指定为 XSD。文档也不清楚这一点。(https://docs.microsoft.com/en-us/azure/data-factory/format-xml)。这是官方文档所说的:

XML schema validation:
You can choose to not validate schema, or validate schema using XSD or DTD.
When using XSD or DTD to validate XML files, the XSD/DTD must be referred inside the XML 
files through relative path

我对这里的第二点感到困惑。

“必须在 XML 文件中引用 XML”是什么意思?

标签: xmlazurexsdazure-data-factory-2

解决方案


我认为它说,我们应该在源 xml 文件中引用 XSD 文件(使用相对路径)。

例如:
在 ADF 中,我设置了一个 Copy 活动: 在此处输入图像描述 这里我的 xml 文件和 xsd 文件位于同一个文件夹中,如下所示:
在此处输入图像描述

在 order.xml 中,用于xsi:noNamespaceSchemaLocation="order.xsd"指定 xsd 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
<order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
          xsi:noNamespaceSchemaLocation="order.xsd">  
          <orderItem>43546533</orderItem>
          <orderItem>53546533</orderItem>
          <orderItem>73546533</orderItem>
          <orderItem>93546533</orderItem>
          <orderItem>43546533</orderItem>
          <orderItem>73546533</orderItem>
          <orderItem>03546533</orderItem>
          <orderItem>33546533</orderItem>
          <orderItem>43216533</orderItem>
          <orderItem>1246533</orderItem>
          <orderItem>4466533</orderItem>
</order>  

订单.xsd:

<?xml version="1.0" encoding="UTF-8"?>  
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
elementFormDefault="qualified" attributeFormDefault="qualified">  
    <xsd:element name="order">  
       <xsd:complexType>  
         <xsd:sequence>  
            <xsd:element name="orderItem" type="xsd:string"  maxOccurs="10"/>  
         </xsd:sequence>  
      </xsd:complexType>  
    </xsd:element>  
</xsd:schema> 

就我而言,当 order.xml 不符合我的验证规则时,它将失败: 在此处输入图像描述

希望我的回答对你有帮助!


推荐阅读