On 10/04/2012 01:56 PM, Harsh Bora wrote:
> Deepak is right - the <attribute
name="transport"> block must be
> embedded in an <optional> block. <zeroOrMore> only applies to elements,
> but as written, your zeroOrMore says that it is okay to omit the overall
> <host> element, but that if you provide a <host> element, it MUST have a
> transport='...' attribute, and that is not correct. For back-compat
> reasons, ALL new attributes must be in an <optional> block since older
> clients of the XML did not provide the new attributes.
Looking at the grammar, it appeared to me like what you said, however,
when I tested the patch, zeroOrMore worked successfully for the
transport attribute as well. However, I am willing to use <optional>
block for consistency.
Hmm, I guess I'd have to read up on the actual grammar of RNG notation
to see if using <zeroOrMore> as an alternate spelling of <optional> for
fixed-name attributes is kosher or just something that our particular
RNG validation engine permits, but it's certainly not typical usage,
when you realize that there will never be more than one of that
attribute. At any rate, we've hashed this topic to death :)
>
>>
>> I chose to check for only ':' to decide if its a IPv6 addr because it
>> doesnt make sense to be partial towards '.' What if someone specifies a
>> host name like 12:12;12,12 or 23:23,23,23 ? A '.' in an IPv6 addr is as
>> bad as any other invalid char.
>
> '.' is valid in IPv6 addr. But yes, ':' is mandatory in IPv6, and
> forbidden in IPv4, so it makes a good distinguishing test between the
> two families.
So, are you suggesting to validate IPv4 only and that too based on the
absence of ':' and presence of '.'? Does that really suffice to validate
an IPv4 since any other special character is also an invalid separator
for IPv4 ?
Ultimately, you want to accept both types of IP addresses. I was just
replying to your quote about '.' not being valid in IPv6 as being an
incorrect statement; I don't really know what the best separator
character is that you want to be using in this context, because I
haven't been following the original conversation closely enough. You
should also realize that hostnames cannot contain ':' or ';' (I'm not
sure about ','), so your question about someone setting a hostname to
'12:12;12,12' to confuse the parser is not worth worrying about.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org