<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to 187: Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/</link><description>Recent changes to 187: Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</description><atom:link href="https://sourceforge.net/p/jedit/plugin-patches/187/feed.rss" rel="self"/><language>en</language><lastBuildDate>Mon, 09 Dec 2019 13:48:30 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/jedit/plugin-patches/187/feed.rss" rel="self" type="application/rss+xml"/><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#89c3</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;That's fine :-)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Le Lay</dc:creator><pubDate>Mon, 09 Dec 2019 13:48:30 -0000</pubDate><guid>https://sourceforge.netfd77c88a263cd9843f83bef94dbb7d2804c19fdb</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#389c</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;OK I have chosen to use curly braces in all cases, even where the &lt;code&gt;append&lt;/code&gt; call is short enough that it would have fitted on one line; I think the consistency makes the method more readable.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Conal Tuohy</dc:creator><pubDate>Mon, 09 Dec 2019 13:38:20 -0000</pubDate><guid>https://sourceforge.net59e42e6abdf91cdfbb6ac6749dd3f70cc961a651</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#c7f2</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Cool! Now I've only one request: put curly braces around cases in getPseudoAttributeValue because it's such a common error to add another indented line to the last case and think that it only applies in it, but it doesn't : it always applies. Or for short code you can put it on the same line as the &lt;code&gt;if&lt;/code&gt;. Then braces are not necessary.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;append&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;amp;&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; // &amp;amp;amp;&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;append&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; // &amp;amp;lt;&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;append&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; // &amp;amp;gt;&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;append&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="s"&gt;); // &amp;amp;quot;&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;append&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; // &amp;amp;apos;&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; {
                &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;appendCodePoint&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Integer&lt;/span&gt;.&lt;span class="nv"&gt;parseInt&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="ss"&gt;)))&lt;/span&gt;&lt;span class="c1"&gt;; // decimal unicode codepoint&lt;/span&gt;
            } &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; {
                &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;appendCodePoint&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Integer&lt;/span&gt;.&lt;span class="nv"&gt;parseInt&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;; // hex unicode codepoint&lt;/span&gt;
            } &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nv"&gt;null&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; 
                &lt;span class="nv"&gt;unescapedValue&lt;/span&gt;.&lt;span class="nv"&gt;append&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;matcher&lt;/span&gt;.&lt;span class="nv"&gt;group&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;; // any other character is copied unchanged&lt;/span&gt;
            }
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Le Lay</dc:creator><pubDate>Mon, 09 Dec 2019 12:21:33 -0000</pubDate><guid>https://sourceforge.net024d0e85694cabaf188b780d18751fa8494e85cf</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#395a</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks very much for spotting the namespace confusion, Eric!&lt;/p&gt;
&lt;p&gt;I was wondering how I could have made that mistake and still had the schema actually work! &lt;/p&gt;
&lt;p&gt;It turns out that the sample TEI XML files I've been working with all have &lt;code&gt;?xml-model?&lt;/code&gt; PIs for both Schematron &lt;em&gt;and&lt;/em&gt; RelaxNG,, and the &lt;code&gt;href&lt;/code&gt; pseudo-attribute value is the same for both the schema types (the RelaxNG schema file actually has Schematron rules embedded in it). I had made a stupid copy-and-paste error, but everything had worked for me, because my "schematron" schema was actually also a RelaxNG schema. I've fixed that now, and I've made the stylistic change to the static field names, and I've made the Pattern objects final and static too.&lt;/p&gt;
&lt;p&gt;Once more, with the diff:&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Conal Tuohy</dc:creator><pubDate>Mon, 09 Dec 2019 11:56:41 -0000</pubDate><guid>https://sourceforge.net3f9e6a4aa98b351c2a6ff7865ef0362e3071953f</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#2830</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;1.1 I would also prioritize RelaxNG. In fact, I don't ask you to implement Schematron at all if you don't need it ;-) What I don't understand is that you match on "http://purl.oclc.org/dsdl/schematron" not "http://relaxng.org/ns/structure/1.0". &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Yes, PI parsing looks perfect! Only a style issue: I prefer final static fields upper-cased. &lt;br/&gt;
Also, I would store the compiled Pattern in the static field (&lt;code&gt;private static final Pattern PSEUDO_ATTRIBUTE = Pattern.compile("...")&lt;/code&gt;) when applicable. Same for the pattern in &lt;code&gt;getPseudoAttributeValue()&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Le Lay</dc:creator><pubDate>Mon, 09 Dec 2019 10:15:55 -0000</pubDate><guid>https://sourceforge.net1fa14a36c76e77c7d31ca840cce545487795a709</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#eb2b</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Regarding the code:&lt;/p&gt;
&lt;p&gt;1 processingInstruction method&lt;br/&gt;
1.1 Yes I have a plan to also support schematron, but I prioritised RelaxNG because the RelaxNG schema language and the &lt;code&gt;&amp;lt;?xml-model?&amp;gt;&lt;/code&gt; PI are the most commonly used in the Text Encoding community, and they were not supported. &lt;br/&gt;
1.2 I am working on Schematron next, but of course the validation itself is very different.&lt;br/&gt;
1.3 Done, thank you.&lt;br/&gt;
2 getPseudoAttributes&lt;br/&gt;
2.1 I have reviewed the pseudo-attribute parsing with more care, and dealt with both the double- and single-quote cases.&lt;br/&gt;
2.2 I believe I have now correctly parsed the PI including, including dealing with encoded chars.&lt;/p&gt;
&lt;p&gt;Thanks for your review!&lt;/p&gt;
&lt;p&gt;See new attached diff&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Conal Tuohy</dc:creator><pubDate>Mon, 09 Dec 2019 09:42:12 -0000</pubDate><guid>https://sourceforge.net73a47caf84d706d57b21da593ba0858542d9492a</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#3088</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Documentation:&lt;br/&gt;
1) the 404 on the TEI schemas is expected (the TEI-C website has a configuration problem). The error has been reported, and a redirect is going to be put in place. These HTTP URLs are the officially published ones at the moment though.&lt;br/&gt;
2) I don't quite understand what you're suggesting. But I did read the "validation" section and noticed the outdated text there (which said that a RelaxNG schema could not be specified in a document), which I've now corrected.&lt;br/&gt;
3) fixed&lt;br/&gt;
I'll update the patch shortly&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Conal Tuohy</dc:creator><pubDate>Mon, 09 Dec 2019 04:40:58 -0000</pubDate><guid>https://sourceforge.net44b4be14b6cc15fdeecc384db8780619fcb370d8</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#1862</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks for the patch.&lt;/p&gt;
&lt;p&gt;Regarding documentation (good that you updated it):&lt;br/&gt;
1. tei hrefs (http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_tite.rng) end in 404 errors. Is it expected?&lt;br/&gt;
2. a pointer to the validation section would be great, for another "external" way to specify RNG schemas.&lt;br/&gt;
3. the new version in CHANGES.txt is 3.0.7&lt;/p&gt;
&lt;p&gt;Regarding the code&lt;br/&gt;
1. processingInstruction()&lt;br/&gt;
    1.1 more cases should be supported based on type and schematypens: rnc, xsd, RelaxNG, as in &lt;a href="https://www.w3.org/TR/xml-model/#d0e689" rel="nofollow"&gt;https://www.w3.org/TR/xml-model/#d0e689&lt;/a&gt;&lt;br/&gt;
    1.2  schematron is not actually supported, is it?&lt;br/&gt;
    1.3  you should get the doc's systemId using &lt;code&gt;xml.PathUtilities.pathToURL(systemId)&lt;/code&gt; instead of using it directly &lt;br/&gt;
2. getPseudoAttributes &lt;br/&gt;
    2.1 the value part of the regex is incorrect: it should match until the quote, not until '=' and support both single and double quotes, as in the spec (dt-parsing)&lt;br/&gt;
    2.2 what about &amp;amp; and &amp;lt;? Can you verify if it's unescaped by the parser? If not we have to document the limitation or do it ourself...&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Le Lay</dc:creator><pubDate>Sun, 08 Dec 2019 18:10:19 -0000</pubDate><guid>https://sourceforge.net78afe6dfe0a947b734437e4ea33248ed029add85</guid></item><item><title>#187 Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/?limit=25#592f</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Adding the XML plugin artifact as an attachment&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Conal Tuohy</dc:creator><pubDate>Tue, 03 Dec 2019 04:46:36 -0000</pubDate><guid>https://sourceforge.net215c606fa946a5e5924ef2b66a0647a20a431da3</guid></item><item><title>Support &lt;?xml-model?&gt; link to RelaxNG schema in XML Plugin</title><link>https://sourceforge.net/p/jedit/plugin-patches/187/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;A patch to add support for &lt;code&gt;&amp;lt;?xml-model&amp;gt;&lt;/code&gt; processing instructions as a way to associate a RelaxNG schema&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Conal Tuohy</dc:creator><pubDate>Tue, 03 Dec 2019 04:44:57 -0000</pubDate><guid>https://sourceforge.netbf31f37c6f716f5cecbf80ab73200ecb4d1a16af</guid></item></channel></rss>