我正在尝试将大型XML文件导入到我的SQL Server 2005中。
让我们看一下我的XML文件片段:
<Details>
<Title>I am a title</Title>
<Manufacturer ....
</Details>
我的xsd看起来像:
<xs:element name="Details" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" sql:field="Title" type="xs:string" />
<xs:element name="Manufacturer" sql:field="Manufacturer" type="xs:string" />
...
</xs:sequence>
</xs:complexType>
</xs:element>
工作正常,但现在我想告诉你xml的奇怪部分:
<Images>
<Img Name="Adv">
<URL>TARGET URL</URL>
<Width>a width ....</Width>
</Img>
<Img Name="Img30">
<URL>a URL again</URL>
<Width>...</Width>
</Img>
<Img Name="Img60">
<URL>......</URL>
<Width>..</Width>
</Images>
如何从(TARGET URL)
获取值Images > Img.Adv > URL
?
如何考虑属性(Name="Adv")
?
我知道了,请帮忙!
答案 0 :(得分:0)
我假设您想知道如何声明使用XSD显示的XML片段。假设<xs:element>
元素接受URL
(未经验证),URI
接受任何小数(浮点),此Width
块将验证您发布的示例,并且您可以拥有无限量的Img
子元素,但至少有一个:
<xs:element name="Images">
<xs:complexType>
<xs:sequence>
<xs:element name="Img" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="URL" type="xs:anyURI" />
<xs:element name="Width" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
您可以将Width
类型更改为xs:integer
以将宽度限制为整数,如果它包含单位(xs:string
)等文本,则可以更改为200px
。您还可以添加限制以验证URL并检查它是否具有有效的图像扩展名,是否以http
等开头,以及限制宽度的限制。
您没有指定嵌套Image
元素的位置。假设它位于现有标签之后的Details
内,您可以添加如下参考:
<xs:element name="Details">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string" />
<xs:element name="Manufacturer" type="xs:string" />
<xs:element ref="Images" />
</xs:sequence>
</xs:complexType>
</xs:element>
或者在那里粘贴整个xs:element
定义。