[
https://issues.apache.org/jira/browse/TIKA-367?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chris A. Mattmann resolved TIKA-367.
------------------------------------
Resolution: Fixed
- fixed in r901066. Updated tika-mimetypes.xml too with improvements to XHTML
and RDF detection leveraging the new comparison code present in this patch.
> Mime type rootXML equality improvement
> --------------------------------------
>
> Key: TIKA-367
> URL: https://issues.apache.org/jira/browse/TIKA-367
> Project: Tika
> Issue Type: Improvement
> Components: mime
> Affects Versions: 0.5
> Environment: My local MacBook pro
> Reporter: Chris A. Mattmann
> Assignee: Chris A. Mattmann
> Fix For: 0.6
>
>
> While working on TIKA-357 and TIKA-366, I noticed (and Ken did too) that
> XHTML detection was no longer working in his regression test within
> o.a.tika.parser.html.HtmlParserTest#testXhtmlParsing. The cause of this has
> to do with the fix for TIKA-327. Because I used namespaceless html and link
> tags as valid root XML for the text/html mime type, text/html was now
> matching for the application/html+xml example that Ken had previously
> included in o.a.tika.parser.html.HtmlParserTest#testXhtmlParsing. Phew. You
> still with me? OK, so if you are, it turns out that the reason it failed was
> due to the rootXML matches rules that were being employed. The code boiled
> down to:
> boolean matches(String namespaceURI, String localName) {
> //Compare namespaces
> if (!isEmpty(this.namespaceURI)) {
> if (!this.namespaceURI.equals(namespaceURI)) {
> return false;
> }
> }
> //Compare root element's local name
> if (!isEmpty(this.localName)) {
> if (!this.localName.equals(localName)) {
> return false;
> }
> }
> return true
> }
> The issue with this block is that this version of the #matches function is
> too lenient. So lenient, to the point of declaring one root-XML match for a
> localName "html" with no namespace superseded another root-XML with a
> localName "html", and that included a namespace. This isn't the behavior we
> want. To alleviate this we should check if this.namespaceURI and
> this.localName are empty (e.g., put in an else block above) and make sure
> that if they are, the provided namespaceURI and localName are empty as well
> in order to return true.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.