2012-07-06 75 views
0

我是XSD/XMl的新手,正在尝试为我使用的项目中使用的xml文件创建模板。模式将由visual studio中的几个同事使用,我的主要目标是具有错误检查和自动完成功能。基于xml内容的XSD限制

但是,我的xml模板有一个特性,我想在XSD上有,但我不知道这是否可能。我认为这不是,但我只是想确定一下。

基本上,XML是这样的:

<root> 
    <parameters> 
     <parameter name="@param1"/> 
     <parameter name="@param2"/> 
     <parameter name="@param3"/> 
    </parameters> 

    <test> 
     <parameter_value parameter_name="@param1" value="whatever"/> 
     <parameter_value parameter_name="@param2" value="whatever"/> 
    </text> 

</root> 

的想法是,第一用户“定义”的参数,然后他为它们分配一个特定的测试中值。我的问题是天气与否我可以定义对“parameter_name”属性的限制,以便只能输入在此特定xml中声明的参数。这可能吗?

问候 卡洛斯·乔丹

回答

0

是的,你可以在XSD 1.0做到这一点。通常是这样的:

<xs:element name="root"> 
    <...> 
    <xs:key name="paramName"> 
    <xs:selection xpath="parameters/parameter"/> 
    <xs:field xpath="@name"/> 
    </xs:key> 
    <xs:keyref refer="paramName"> 
    <xs:selection xpath="text/parameter_value"/> 
    <xs:field xpath="@parameter_name"/> 
    </xs:keyref> 
</xs:element> 

这是从内存,所以准备查找正确的语法在你最喜欢的XSD课本。