So, put simply, in case of id="1_invalid_NCName", the fix is to ignore the ID (that is: to treat the element as one without a ID).

This is an improvement. I am satisified. But I would of course like to make some points:

Side effect 1: This should dramatically reduce the need for error message(s) for the situation(s) when «Copy As Reference» would fail. Actually, I struggle to come up with situations where error messages would be warranted…

Side effect 2: If the user runs XXE with Advanced XInclude enabled *and* also the (recommended!) option to warn against use of Advanced XInclude enabled, then, when using Copy as Reference and if the targeted ID does not meet the NCName requirementes, the user would get a warning against use of Advanced XInclude. And so the user would *anyhow* wonder why XXE “failed” to use the ID as shorthand XPointer.

Side effect 3: Occassionally, when advanced XInclude is disabled, some will wonder why "Copy as Reference" is grayed out for id="1_invalid_NCName".

Error message: Even if an error message for "Copy as Reference" would seldom, if ever, bee warranted, what more would an error message need to do, other than pointing out that the ID did not meet the NCName requirement, and perhaps link to a good Web page which explains the ideosyncratic rules for NCNames? (For example, the issue that Ethiopian letters being forbidded and so on, see https://www.oreilly.com/library/view/xml-in-a/0596007647/re148.html )

Leif Halvard Silli

2023-03-02 10:20 Hussein Shafie:
We now consider this bug to be fixed.

* When the "Copy As Reference" menu item is not disabled (grayed) and
this command fails to create a reference, it now displays an error
dialog box. The error message does not explain why the command has
failed. Anyway this explanation would be quite technical and hard to
understand for the average user.

* With option "Allow advanced use of XInclude" turned OFF and an
XHTML5 element having id="What?", the "Copy As Reference" menu item is
now disabled (grayed). id="What?" is a valid XHTML5 ID but cannot be
used to create an shorthand XPointer. A shorthand XPointer (AKA
barename) must be an NCName.

* With option "Allow advanced use of XInclude" turned ON and an XHTML5
element having id="What?", the "Copy As Reference" menu item works and
creates an Element scheme XPointer looking like element(/1/2/2/3) or
element(valid_ancestor_id/2/4/1), valid_ancestor_id being an NCName.


--
XMLmind XML Editor Support List
xmleditor-support@xmlmind.com
http://www.xmlmind.com/mailman/listinfo/xmleditor-support

Reply via email to