Repository: any23
Updated Branches:
  refs/heads/master 9bab662c4 -> a58d59e35


ANY23-408 Use document IRI as default namespace in microdata strict mode


Project: http://git-wip-us.apache.org/repos/asf/any23/repo
Commit: http://git-wip-us.apache.org/repos/asf/any23/commit/a58d59e3
Tree: http://git-wip-us.apache.org/repos/asf/any23/tree/a58d59e3
Diff: http://git-wip-us.apache.org/repos/asf/any23/diff/a58d59e3

Branch: refs/heads/master
Commit: a58d59e35da537b69820baf0cb6423fb3facea02
Parents: 9bab662
Author: Hans <[email protected]>
Authored: Wed Oct 24 14:16:57 2018 -0500
Committer: Hans <[email protected]>
Committed: Wed Oct 24 14:16:57 2018 -0500

----------------------------------------------------------------------
 .../extractor/microdata/MicrodataExtractor.java     | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/any23/blob/a58d59e3/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java
 
b/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java
index b60677d..1e1f021 100644
--- 
a/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java
+++ 
b/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java
@@ -103,7 +103,7 @@ public class MicrodataExtractor implements 
Extractor.TagSoupDOMExtractor {
                 throw new IllegalArgumentException("invalid namespace IRI: " + 
defaultNamespace);
             }
         } else {
-            defaultNamespace = null;
+            defaultNamespace = createNamespaceFromPrefix(documentIRI);
         }
 
         documentLanguage = getDocumentLanguage(in);
@@ -507,6 +507,20 @@ public class MicrodataExtractor implements 
Extractor.TagSoupDOMExtractor {
     private static final String hcardPrefix    = 
"http://microformats.org/profile/hcard";;
     private static final IRI hcardNamespaceIRI = 
RDFUtils.iri("http://microformats.org/profile/hcard#";);
 
+    static {
+        assert 
createNamespaceFromPrefix(RDFUtils.iri(hcardPrefix)).equals(hcardNamespaceIRI);
+    }
+
+    private static IRI createNamespaceFromPrefix(IRI prefix) {
+        if (prefix.getLocalName().isEmpty()) {
+            return prefix;
+        }
+        String ns = prefix.getNamespace();
+        IRI ret = RDFUtils.iri(ns.endsWith("#") ? ns : (prefix.stringValue() + 
"#"));
+        assert ret.getLocalName().isEmpty() && 
ret.getNamespace().endsWith("#");
+        return ret;
+    }
+
     private static IRI getNamespaceIRI(IRI itemType) {
         //TODO: support registries so hardcoding not needed
         return itemType.stringValue().startsWith(hcardPrefix) ? 
hcardNamespaceIRI : itemType;

Reply via email to