[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8516: nxml-mode: pattern matching should be case-sensitive in valida
From: |
Lawrence Mitchell |
Subject: |
bug#8516: nxml-mode: pattern matching should be case-sensitive in validation |
Date: |
Mon, 18 Apr 2011 11:52:42 +0100 |
User-agent: |
Gnus/5.110016 (No Gnus v0.16) Emacs/24.0.50 (gnu/linux) |
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>