* bug#8516: nxml-mode: pattern matching should be case-sensitive in validation
@ 2011-04-17 19:09 Rob Browning
2011-04-18 10:00 ` Yuanle Song
2011-04-18 10:52 ` Lawrence Mitchell
0 siblings, 2 replies; 4+ messages in thread
From: Rob Browning @ 2011-04-17 19:09 UTC (permalink / raw)
To: 8516; +Cc: 288147-forwarded
(If possible, please preserve the 288147-forwarded address in any replies.)
Vincent Lefevre <vincent@vinc17.org> writes:
> Consider the following example:
> ay:~> cat test.xml
> <?xml version="1.0"?>
> <root>Test</root>
> ay:~> cat test.rnc
> default namespace = ""
> start = element root { xsd:normalizedString { pattern = "[a-z]*" } }
> When test.xml is opened in emacs, nxml-mode says that the file is valid,
> though the root element contains a "T". If I add ASCII letters (either
> lowercase or uppercase), it still says that the file is valid, but as
> soon as I add a non-letter character, nxml-mode says that the file is
> invalid, as expected.
> As a comparison, here's what I get with xmllint:
> ay:~> trang test.rnc test.rng
> ay:~> xmllint --noout --relaxng test.rng test.xml
> test.xml:2: element root: Relax-NG validity error : Error validating datatype normalizedString
> test.xml:2: element root: Relax-NG validity error : Element root failed to validate content
> test.xml fails to validate
Please see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288147 for
further information.
Thanks
--
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#8516: nxml-mode: pattern matching should be case-sensitive in validation
2011-04-17 19:09 bug#8516: nxml-mode: pattern matching should be case-sensitive in validation Rob Browning
@ 2011-04-18 10:00 ` Yuanle Song
2011-05-22 19:47 ` Chong Yidong
2011-04-18 10:52 ` Lawrence Mitchell
1 sibling, 1 reply; 4+ messages in thread
From: Yuanle Song @ 2011-04-18 10:00 UTC (permalink / raw)
To: 8516
I think it's because string-match ignore case when case-fold-search is t
(which is the default), so greped a little on nxml dir and found the
following function may be the problem. But I haven't read the how the
whole file and don't know how nxml validation works, so some one more
knowledgeable should verify this is the right thing to do.
I tested on the test.xml and test.rnc and after this patch, capitalized
"Test" will result an invalid xml file.
Thanks,
Yuanle
--- /home/sylecn/fromsource/emacs-23.3/lisp/nxml/rng-xsd.el 2011-01-08 11:45:14.000000000 -0600
+++ /home/sylecn/fromsource/emacs/lisp/nxml/rng-xsd.el 2011-04-18 04:35:08.135816534 -0500
@@ -238,7 +238,7 @@
obj)))
(defun rng-xsd-check-pattern (str regexp convert &rest args)
- (and (string-match regexp str)
+ (and (let (case-fold-search) (string-match regexp str))
(apply convert (cons str args))))
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#8516: nxml-mode: pattern matching should be case-sensitive in validation
2011-04-17 19:09 bug#8516: nxml-mode: pattern matching should be case-sensitive in validation Rob Browning
2011-04-18 10:00 ` Yuanle Song
@ 2011-04-18 10:52 ` Lawrence Mitchell
1 sibling, 0 replies; 4+ messages in thread
From: Lawrence Mitchell @ 2011-04-18 10:52 UTC (permalink / raw)
To: 8516; +Cc: 288147-forwarded
Rob Browning wrote:
> (If possible, please preserve the 288147-forwarded address in any replies.)
> Vincent Lefevre <vincent@vinc17.org> writes:
>> Consider the following example:
>> ay:~> cat test.xml
>> <?xml version="1.0"?>
>> <root>Test</root>
>> ay:~> cat test.rnc
>> default namespace = ""
>> start = element root { xsd:normalizedString { pattern = "[a-z]*" } }
>> When test.xml is opened in emacs, nxml-mode says that the file is valid,
>> though the root element contains a "T". If I add ASCII letters (either
>> lowercase or uppercase), it still says that the file is valid, but as
>> soon as I add a non-letter character, nxml-mode says that the file is
>> invalid, as expected.
>> As a comparison, here's what I get with xmllint:
>> ay:~> trang test.rnc test.rng
>> ay:~> xmllint --noout --relaxng test.rng test.xml
>> test.xml:2: element root: Relax-NG validity error : Error validating
>> datatype normalizedString
>> test.xml:2: element root: Relax-NG validity error : Element root
>> failed to validate content
>> test.xml fails to validate
> Please see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288147 for
> further information.
The various string-checking functions in rng-xsd.el probably need
to wrap string-match calls in a (let ((case-fold-search nil))
...)
To fix this particular problem, replace rng-xsd-check-pattern by:
(defun rng-xsd-check-pattern (str regexp convert &rest args)
(let ((case-fold-search nil))
(and (string-match regexp str)
(apply convert (cons str args)))))
Lawrence
--
Lawrence Mitchell <wence@gmx.li>
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#8516: nxml-mode: pattern matching should be case-sensitive in validation
2011-04-18 10:00 ` Yuanle Song
@ 2011-05-22 19:47 ` Chong Yidong
0 siblings, 0 replies; 4+ messages in thread
From: Chong Yidong @ 2011-05-22 19:47 UTC (permalink / raw)
To: Yuanle Song; +Cc: 8516, Rob Browning
Yuanle Song <sylecn@gmail.com> writes:
> I think it's because string-match ignore case when case-fold-search is t
> (which is the default), so greped a little on nxml dir and found the
> following function may be the problem. But I haven't read the how the
> whole file and don't know how nxml validation works, so some one more
> knowledgeable should verify this is the right thing to do.
>
> I tested on the test.xml and test.rnc and after this patch, capitalized
> "Test" will result an invalid xml file.
Patch looks right to me. Committed to the Emacs repository trunk,
thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-05-22 19:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-17 19:09 bug#8516: nxml-mode: pattern matching should be case-sensitive in validation Rob Browning
2011-04-18 10:00 ` Yuanle Song
2011-05-22 19:47 ` Chong Yidong
2011-04-18 10:52 ` Lawrence Mitchell
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).