2012-02-04 11 views
5

Mi archivo categories.xml se da a continuaciónConfundir ¿Cuál debería ser mi Expresión Xpath?

<categories> 
    <root name="Cars -Vehicles" id="CV"></root> 
    <root name="Personals" id="PER"></root> 
    <root name="Real Estate" id="RE"></root> 
    <root name="Property For Rent" id="PFR"></root> 
    <root name="Community" id="COM"></root> 
</categories> 

y Mi archivo attibutes.xml se da a continuación

<attributes> 

    <attribute value="ethnicity=ethnicity_african_american" name ="American Indian" categoryid="PER"/> 
    <attribute value="ethnicity=ethnicity_asian_pacific_islander" name ="Asian - Pacific Islander" categoryid="PER"/> 
    <attribute value="ethnicity=ethnicity_caucasian" name ="Caucasian" categoryid="PER"/> 


    <attribute value="amenities=amenities_ac" name ="AC" categoryid="RE, PFR"/> 
    <attribute value="amenities=amenities_alarm" name ="Alarm" categoryid="RE, PFR"/> 

</attributes> 

até mi attributeDropdown en la selección de categoriesDropDown. Código A continuación se da

protected void ddCategories_SelectedIndexChanged(object sender, EventArgs e) 
{ 
      XmlDataSource xd = new XmlDataSource(); 
      xd.DataFile = Server.MapPath("Xmls") + "\\attributes.xml"; 
      xd.XPath = "/attributes/attribute[@categoryid='" + 
         categoriesDropDown.SelectedValue.ToString() + "']"; 

      attributeDropdown.DataSource = xd; 
      attributeDropdown.DataTextField = "name"; 
      attributeDropdown.DataValueField = "value"; 

      attributeDropdown.DataBind(); 

     // categoriesDropDown.DataTextField = "name"; 
     // categoriesDropDown.DataValueField = "id"; 

} 

Ahora el problema es de dos atributos denominados AC y alarma se encuentran en dos categorías Inmobiliaria y alquiler de bienes raíces. ¿Cómo puedo vincular estos atributos en la selección de estas categorías?

Insort ¿Cuál debería ser mi Expresión Xpath si los atributos están en varias categorías?

Respuesta

1

tal vez no es una buena solución, pero se puede utilizar contains función, por ejemplo .:

/attributes/attribute[contains(@categoryid, 'category')] 

De acuerdo con su código:

xd.XPath = string.Format("/attributes/attribute[contains(@categoryid, '{0}')]", 
    categoriesDropDown.SelectedValue); 
Cuestiones relacionadas