This is the XML document that I have:
<products xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Product Id="1">
<Product Id="1_1">
<Attribute Name="Whatever"></Attribute>
</Product>
<Attributes xmlns="http://some/path/to/entity/def">
<Attribute Name="Identifier">NumberOne</Attribute>
</Attributes>
</Product>
<Product Id="2">
<Attributes xmlns="http://some/path/to/entity/def">
<Attribute Name="Identifier">NumberTwo</Attribute>
</Attributes>
</Product>
</products>
I'm trying to use XPath for getting a Product by its child Attributes.Attribute[Name=Identifier] value (e.g. "NumberOne").
So in that case my expected result would be:
<Product Id="1">
<Product Id="1_1">
<Attribute Name="Whatever"></Attribute>
</Product>
<Attributes xmlns="http://some/path/to/entity/def">
<Attribute Name="Identifier">NumberOne</Attribute>
</Attributes>
</Product>
Based on this explanation, I tried to implement the query in Python by using the lxml lib:
found_products = xml_tree_from_string.xpath('//products//Product[c:Attributes[Attribute[@Name="Identifier" and text()="NumberOne"]]]', namespaces={"c": "http://some/path/to/entity/def"})
Unfortunately, this never returns a result due to the Attributes namespace definition.
What am I missing?