【问题标题】:XML validation in Azure Data FactoryAzure 数据工厂中的 XML 验证
【发布时间】:2020-09-16 15:10:57
【问题描述】:

我正在尝试在 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”是什么意思?

【问题讨论】:

    标签: xml azure xsd azure-data-factory-2


    【解决方案1】:

    我认为它说,我们应该在源 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>  
    

    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 不符合我的验证规则时,它将失败:

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

    【讨论】:

    • 谢谢,我会试试看。你在使用 blob 存储吗?我是否需要将 XSD 文件也放置在存储帐户中与源文件相同的路径中?
    • 我正在使用数据湖 gen2 存储。 XSD文件不需要放在同一个路径下,相对路径即可。
    • @JosephXu 感谢您的发帖。但是,当您不控制 XML 时,如何进行 XSD 验证呢?我们从外部源获取 XML,它没有 xsi:noNamespaceSchemaLocation 那么我们如何验证我们的 XSD?
    • @SteveC ,我想我们可以在 xml 文件中使用 xsi:schemaLocation="yourURL1 xxxx.xsd" 。在 xsd 文件中我们可以使用targetNamespace="yourURL1"。这个document 可以回答你的问题吗?但是只支持相对路径的引用。
    • @JosephXu 感谢您的回复。我的问题是我们得到的 XML 是固定的,所以他们没有架构部分。数据工厂验证在我看来是一个主要限制,即 XML 必须在其中包含模式的值。我们在逻辑应用中进行 XSD 验证,您只需在其中指定 XML 和 XSD 来验证它。
    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2017-08-21
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多