diff --git a/docs/ldh/MIGRATION.md b/docs/ldh/MIGRATION.md
index 3f22502..a5da131 100644
--- a/docs/ldh/MIGRATION.md
+++ b/docs/ldh/MIGRATION.md
@@ -67,7 +67,9 @@ kept the textarea in sync continuously; the replacement syncs once, declarativel
Key points: serialize the container's **children only** (no wrapper element —
parse-rdf-post adds the div); `mode="canonical"` guarantees the stored literal is
sanitized and free of editing ephemera (chrome, contenteditable, classes, on*
-handlers, unsafe URLs).
+handlers, unsafe URLs). SaxonJS 3 applies `ixsl:set-property` immediately
+(verified in-browser), so the value is readable by `ldh:parse-rdf-post` within
+the same submit event.
### 4. Asset loading — `layout.xsl`
diff --git a/rdfa-editor.css b/rdfa-editor.css
index ed87253..60aa7c4 100644
--- a/rdfa-editor.css
+++ b/rdfa-editor.css
@@ -536,7 +536,7 @@
}
/* Breadcrumb bar (Fonto-style element path + RDFa subject) */
- #breadcrumb {
+ #rdfa-editor-breadcrumb {
position: fixed;
left: 0;
right: 0;
@@ -565,7 +565,7 @@
margin: 0 4px;
}
-#breadcrumb-subject {
+#rdfa-editor-breadcrumb-subject {
font-family: 'Courier New', monospace;
font-size: 12px;
color: #1565c0;
diff --git a/src/edit.xsl b/src/edit.xsl
index e830f2b..9ad2987 100644
--- a/src/edit.xsl
+++ b/src/edit.xsl
@@ -35,6 +35,12 @@ version="3.0">
+
+
+
+
+
@@ -346,7 +352,7 @@ version="3.0">
-
+
@@ -362,23 +368,39 @@ version="3.0">
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/index.xsl b/src/index.xsl
index cbfdfd2..29fd278 100644
--- a/src/index.xsl
+++ b/src/index.xsl
@@ -52,19 +52,31 @@ version="3.0">
documents into the SaxonJS document pool (SaxonJS.getResource +
documentPool), keyed by page-relative URI -->
-
-
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
diff --git a/src/navigate.xsl b/src/navigate.xsl
index 7778afc..a655c8b 100644
--- a/src/navigate.xsl
+++ b/src/navigate.xsl
@@ -35,10 +35,10 @@ version="3.0">
-