unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* 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).