2009-04-03 17 views
0

J'ai un document XML que j'afficher dans un navigateur Web, avec une feuille de style ci-joint:contentEditable sur les noeuds d'un document XML/composé?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<?xml-stylesheet type="text/css" href="abc.css"?> 
<myxml xmlns:xhtml="http://www.w3.org/1999/xhtml"> 
    <para>I wish i was editable</para> 
    <xhtml:script type="text/javascript" src="abc.js"/> 
</myxml> 

Avec la déclaration d'espace de noms xhtml et xhtml: balise script, je peux exécuter javascript.

Ce que je voudrais faire est de rendre les éléments arbitraires non-XHTML dans ce document modifiables. (En fait, ils seront dans un autre espace de nom)

Même si j'ajoute explicitement @ contentEditable = "true" (c'est-à-dire sans recourir à Javascript), le contenu n'est pas réellement éditable (dans Firefox 3.0.4).

Est-il possible de l'éditer dans l'un des navigateurs actuels? (Je n'ai eu aucun problème avec <div contentEditable="true"> Editez-moi </div> dans un doc XHTML 1.0 Transitional)

Je ne peux même pas éditer un xhtml: div dans ce document (dans Firefox); si je pouvais le faire, cela pourrait offrir une solution.

Répondre

1

Dans Firefox 3, @ modifiable content = "true" ne fait l'élément pertinent modifiable si le type de contenu est text/html (qui se trouve également si un nom de fichier local se termine par .html)

Il doesn « t travailler pour les types de contenu application/xhtml + xml ou text/xml (noms de fichiers locaux ou se terminant par .xhtml .xml)

Je suis connecté une amélioration pour cela: https://bugzilla.mozilla.org/show_bug.cgi?id=486931

0

œuvres contentEditable (testé dans Firefox et Chrome) sur les éléments qui sont étrangers au format html/xhtml si j'utilise ce type de document:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
         "http://www.w3.org/TR/html4/loose.dtd"> 

et une extension .html (au lieu de .xml).

Je n'ai aucun élément html à inclure (par exemple, tête, corps, div, p). Cependant, css n'est pas appliqué (si mon xml est dans un espace de noms, ce qui est logique, vu le doctype!).

Pas une solution élégante.

0

Firefox est l'un des rares navigateurs qui applique strictement la spécification XHTML. Ainsi, pour rendre un élément modifiable, vous devez spécifier l'attribut contenteditable en tant que true. Notez que le nom de l'attribut entier est en minuscules. Dans votre exemple, le premier "E" de editable a été mis en majuscule.

Une autre excroissance à mentionner est que IE (6,7,8) agit exactement le contraire. Pour rendre un élément modifiable dans IE, vous DOIT ajouter contentEditable="true" exactement. Pour toute raison, contenteditable="true" (ainsi que toute autre variation de capitalisation) ne fonctionne pas.