Sure, what you posted succeeds at encoding the information, I just think there are better ways to encode it. Like you said, whether something is "wieldable" or not is a Boolean state, but there's many ways to encode that -- as a property on an element as you've done is one way, the presence of an element named <wieldable> is another. In the former, one has to modify the component element schema every time a new component ability is added (component is going to keep growing too!), in the latter, you just define a new element type and add it to the list of acceptable child elements of <componenents>. In the former, its difficult to add any information about the wieldable-ness of the object -- perhaps its only wieldable by a certain class of character, or requires a certain amount of strength to wield-- in the latter, because wieldable is its own element, it can have its own properties and child elements that further describe it, and everything is neatly organized -- Wieldable might have an entirely different set of properties and children that describe it than Equipable does.
This goes back to one of the things I said early on, which is that unlike JSON or YAML, XML is as much a language for describing the data format as it is for exchanging data using said format. Its a truly structured document, rather than a list of information loosely organized by convention alone. Because of this, the way you structure your format has a big impact not only on your data interchange, but also on the effectiveness of other very useful tools in the XML ecosystem, like validators, XSLT, and XPath.