Hi,
Does anybody on this list have experience with dual language editing
with XXE? How do you layout both languages?
We would like to let users edit a document containing the same text in 2
languages and we've come up with a document structure looking like this:
<Multi-lingual-block>
<p>A paragraph in English</p>
<p>Same paragraph in French</p>
</Multi-lingual-block>
Of course, users would like to see each p in separate column:
A paragraph Same paragraph
in English. in French.
We've been playing with 3 different methods to do this with XXE and none
of them is really satisfying:
1. 2 views of the same doc
One view (i.e. style sheet) showing only EN, one showing only FR, both
displayed simultaneously in XXE. We have a number of issues with this
solution:
- need for special rules to insert/delete/copy/paste in both sides at
the right place
- most importantly, XXE synchronises the views on the parent of the
currently selected element, not on the element itself. This means that
with a <div> containing several <p>, clicking inside the last <p> in one
view will scroll the other view to the <div>, not to the (invisible)
same <p>.
2. 2 columns
This is the ideal, but unfortunately not possible with XXE due to lack
of support for float and width CSS properties. I wonder why XMLMind are
not implementing this, as it seems many people would need it.
3. Using tables
For this, we need to add an otherwise useless container element around
<Multi-lingual-block>, so that we can give a display:table to the
container, a display:table-row to <Multi-lingual-block> and a
display:table-cell to <p>.
Regarding these tables, I have a question following Hussein's response
on this list:
http://www.xmlmind.com/pipermail/xmleditor-support/2006-February/003772.html
In your solution, you propose to generate an anonymous row and some
cells on a list item:
ul.table {
display: table;
}
ul.table > li {
display: table-row;
content: row(cell(content(icon(diamond), " ", counter(n),
" ", icon(diamond))),
cell(text-field(40)),
cell(insert-same-after-button()),
cell(insert-same-before-button()));
}
Here, the text node in each li is used to fill the <input> field.
Obviously, it wouldn't work if the li contained elements, not just text.
Is there any way to replace text-field(40) by some hook which would
simply "apply-templates" (in XSLT terms) inside the generated cell?
This would allows us to generate anonymous tables (and rows and cells)
for basically any element, without creating an articial container to
support a display:table.
Interestingly, anonymous tables are not always problem. See :
http://www.xmlmind.com/xmleditor/_distrib/doc/csssupport/display_inline.html
The last option generates a row and some cells in the context of an
inline element, without having a parent element with a display:table.
Why can't we do this outside the context of generated content?
b.iir:after {
display: inline;
content: row(cell(icon(right)),
cell("generated content"),
cell(icon(left)),
border-width, 1,
border-style, solid);
}
Best regards and thank you for your excellent support on this list,
Benoit