Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

id et caractère "/"

29 réponses
Avatar
unbewusst.sein
j'ai vu qu'un auteur utilisait comme id d'une élément, le path d'y
celui.

donc, contenant, a minima, des "/".

c'est orthodoxe ça ???

--
Une Bévue

10 réponses

1 2 3
Avatar
Mickaël Wolff
Une Bévue a écrit :
j'ai vu qu'un auteur utilisait comme id d'une élément, le path d'y
celui.



Ce qui est une très maladroit. En effet, l'id devrait être alors mis à
jour à chaque réorganisation du document. On perd alors la possibilité
d'utiliser intelligemment les ID pour le javascript et les CSS.

c'est orthodoxe ça ???



Si j'en crois la bible aux versets
<http://www.w3.org/TR/html4/struct/global.html#adef-id> et
<http://www.w3.org/TR/html4/types.html#type-name>, il n'est pas très
orthodoxe d'introduire des slashes.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
unbewusst.sein
Mickaël Wolff wrote:

> j'ai vu qu'un auteur utilisait comme id d'une élément, le path d'y
> celui.

Ce qui est une très maladroit. En effet, l'id devrait être alors mis à
jour à chaque réorganisation du document. On perd alors la possibilité
d'utiliser intelligemment les ID pour le javascript et les CSS.



ben je ne suis pas d'accord parce que, si l'auteur fait ça c'est
justement pour pouvoir s'en servir en js, quant aux css, ils sont
définis par des classes, dans du html représentant l'arborescence d'un
dosssier on est obligé d'en passer par des classes.

> c'est orthodoxe ça ???

Si j'en crois la bible aux versets
<http://www.w3.org/TR/html4/struct/global.html#adef-id> et
<http://www.w3.org/TR/html4/types.html#type-name>, il n'est pas très
orthodoxe d'introduire des slashes.


ok, merci beaucoup, ta deuxième ref est très claire les IDs doivent être
composés de :
[A-Za-z] (premier caractère) [0-9] "-" "_" ":" et ".".

bon deux RegExp feront l'affaire.

--
Une Bévue
Avatar
Mickaël Wolff
Une Bévue a écrit :
ben je ne suis pas d'accord parce que, si l'auteur fait ça c'est
justement pour pouvoir s'en servir en js,



Dans ce cas, il vaut mieux alors utiliser le XPath avec l'outil ad-hoc
<http://www.w3.org/TR/DOM-Level-3-XPath/> (à noter que les bibliothèques
telles que jquery permettent d'utiliser facilement le XPath). Les ID
sont justement destinés à permettre un accès indépendant de la structure
du document. Les ID font parties des données, contrairement à la
structure qui ne fait qu'enrober les données.

quant aux css, ils sont
définis par des classes, dans du html représentant l'arborescence d'un
dosssier on est obligé d'en passer par des classes.



Non. Tu peux définir un style en fonction de l'ID :

#header { ... }
#footer { ... }

L'avantage est que, comme ça, tu peux garantir l'unicité du header et
du footer, puisqu'en validant la page HTML, seule un élément peut avoir
l'ID header et un auter l'ID footer.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
unbewusst.sein
Mickaël Wolff wrote:

ben je ne suis pas d'accord parce que, si l'auteur fait ça c'est
> justement pour pouvoir s'en servir en js,

Dans ce cas, il vaut mieux alors utiliser le XPath avec l'outil ad-hoc
<http://www.w3.org/TR/DOM-Level-3-XPath/> (à noter que les bibliothèques
telles que jquery permettent d'utiliser facilement le XPath). Les ID
sont justement destinés à permettre un accès indépendant de la structure
du document. Les ID font parties des données, contrairement à la
structure qui ne fait qu'enrober les données.



j'utilises régulièrement XPath avec n namespaces (xhtml+svg+Mathml).
sans doute me suis-je mal exprimé.

la page :
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/index.php
fait une requête (événement window.onload) à un script php "browse.php"
, via un script javascript browse.js) qui retourne le contenu du premier
niveau du dossier passé en argument :
browse("/XML"); ($dir est défini dans config.php)

(attention la page ne marche pas correctement les images ne sont pas
affichées et les liens a href ne marchent pas ???)

on a donc un premier niveau d'arborescence avec des LI dans un UL d'id
"root" et de class "root" ensuite pour chaque dossier de ce premier
niveau le LI de ce dossier contient un UL avec un ID calculé à partir de
son path relatif au DOCUMENT_ROOT du serveur c'est cet ID (quand ça
marchera) qui parmettra au script js "browse.js" de faire un appendChild
au bon endroit, c'est-à-dire :

supposons que l'utilisateur ait cliqué sur le dossier "datas" le onclick
actionne :
browse("ID:2FUsers:2Fyt:2FSites:2FXML:2Fdatas");
l'argument de browse(), est l'ID de l'UL où le résultat de cette
deuxième requête devra être incorporé mais aussi le path au sens POSIX
(et non pas XPath) en effet en remplaçant les ":" par "%" puis les "%2F"
par / et en supprimant la string "ID" en tête on obtient :

/Users/yt/Sites/XML/datas

qui est le path-POSIX absolu du répertoire dont on souhaite représenter,
en html, la structure de premier niveau.

donc, l'ID sert, comme d'hab, a identifier un élément html parmi d'autes
mais simultanément à coder le path (urlencode en php) du dossier que
l'on souhaite visualiser.

les règles d'obtention de cet ID sont :
- ajouter "ID" en tête de string pour s'assurer que l'ID commence bien
par une lettre contenue dans A-Za-z ;
- convertir le path posix par urlencode (côté php) ;
- comme la précédente conversion utilise des "%", remplacer les "%" par
des ":".

j'obtiens donc un ID conforme, au sens w3c.

la seule difficulté qui me resterait (pour l'encodage de l'ID) est qu'il
n'y a pas d'équivalent strict en javascript à la méthode php urlencode.

pour l'instant, j'utilise encodeURIComponent côté js.

j'ai deux pages d'essais de ces encodages/décodages, l'une en javascript
:
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/path2id.html
l'autre en php :
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/path2id.php
dont le contenu est le suivant :
------------------------------------------------------------------------
<?php
$path='/Users/yt/Sites/JS/doc/closures/closures_fichiers';
$id='ID'.urlencode($path);
$id=preg_replace('/%/', ':', $id);
$pathback=preg_replace('/:/', '%', substr($id, 2));
$pathback=urldecode($pathback);
?>
<html><head><title>PHP Path to ID encoder/decoder</title>
</head>
<body><br />
<h5><?echo $path?></h5>
<h5><?echo $id?></h5>
<h5><?echo $pathback?></h5>
</body></html>
------------------------------------------------------------------------

> quant aux css, ils sont
> définis par des classes, dans du html représentant l'arborescence d'un
> dosssier on est obligé d'en passer par des classes.

Non. Tu peux définir un style en fonction de l'ID :

#header { ... }
#footer { ... }

L'avantage est que, comme ça, tu peux garantir l'unicité du header et
du footer, puisqu'en validant la page HTML, seule un élément peut avoir
l'ID header et un auter l'ID footer.



ouais, ça je sais ce n'est pas le problème ici.

en espérant avoir été plus clair ;-)
--
Une Bévue
Avatar
Mickaël Wolff
Une Bévue a écrit :
j'utilises régulièrement XPath avec n namespaces (xhtml+svg+Mathml).
sans doute me suis-je mal exprimé.



C'est possible que nous nous soyons mal compris.

(attention la page ne marche pas correctement les images ne sont pas
affichées et les liens a href ne marchent pas ???)



En l'occurrence, j'ai tenté d"y apporter des éléments dans ma réponse
au fil concerné.

donc, l'ID sert, comme d'hab, a identifier un élément html parmi d'autes
mais simultanément à coder le path (urlencode en php) du dossier que
l'on souhaite visualiser.



As-tu pensé à utiliser les inode ? Il y a quelques limitations à
utiliser les inode, mais ça peut peut-être te dépanner.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
unbewusst.sein
Mickaël Wolff wrote:


As-tu pensé à utiliser les inode ? Il y a quelques limitations à
utiliser les inode, mais ça peut peut-être te dépanner.



non, pas du tout, je n'y ai pas pensé, mais j'ai déja lu qqpart que cela
permettait de code le path d'un fichier...
je regarderais, pour info, en tk ça roule maintenant, dès que j'ai un
moment j'upload sur free, mon script marche avec php 5 sur ma bécanne
mais semble marcher aussi sur le php 4 de free.
--
Une Bévue
Avatar
Mickaël Wolff
Une Bévue a écrit :
non, pas du tout, je n'y ai pas pensé, mais j'ai déja lu qqpart que cela
permettait de code le path d'un fichier...



En fait, l'inode est l'identifiant du fichier au sein du système de
fichier. Il y a deux problèmes qu'on peut entrevoir :

- l'inode n'est unique que dans un même système de fichiers
- un inode peut peut être pointé par plusieurs noms de fichier (liens
durs)

Bref, ce n'est pas forcément une bonne idée.

Peut-être qu'il faudra que tu codes quelque chose d'équivalent à
base64, mais adapté aux ID.

Et une dernière chose : un nom de fichier peut contenir n'importe quel
caractère, en dehors de '' et de '/'. Il va donc falloir prévoir large ;)
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Sergio
Mickaël Wolff vient de nous annoncer :

donc, l'ID sert, comme d'hab, a identifier un élément html parmi d'autes
mais simultanément à coder le path (urlencode en php) du dossier que
l'on souhaite visualiser.



As-tu pensé à utiliser les inode ? Il y a quelques limitations à
utiliser les inode, mais ça peut peut-être te dépanner.



Les inode ? Qu'est-ce que ça vient faire là-dedans ?

Pour moi (http://fr.wikipedia.org/wiki/Inode ) les inodes sont des
structures de données propres au file-system (sous Unix notamment).
Quel est le rapport avec le codage HTML ?

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
unbewusst.sein
Mickaël Wolff wrote:


En fait, l'inode est l'identifiant du fichier au sein du système de
fichier. Il y a deux problèmes qu'on peut entrevoir :

- l'inode n'est unique que dans un même système de fichiers



pas grave, il doit-être particuliérement rare d'avoir un site qui
fonctionne sur plusieurs systèmes de fichiers non ?

- un inode peut peut être pointé par plusieurs noms de fichier (liens
durs)



ouais, je ne sais si les hardlink s'utilisent couramment ou pas sous le
DOCUMENT_ROOT d'Apache, perso je n'ai jamais utilisé que des symlinks.

Bref, ce n'est pas forcément une bonne idée.

Peut-être qu'il faudra que tu codes quelque chose d'équivalent à
base64, mais adapté aux ID.



ben il faut un codage unique rapide implémentable facilement en JS et en
PHP, voire en ruby.
comme, pour les noms de fichiers, la tendance est à l'utf-8, voire
utf-16,
Et une dernière chose : un nom de fichier peut contenir n'importe quel
caractère, en dehors de '' et de '/'. Il va donc falloir prévoir large ;)



ok ça vient de C, ça, c'est le caractère de fin de chaîne si je ne
m'abuse, / c'est évident qu'il ne peut y en avoir dans les noms de
fichiers.

mais quequ'un avait un problème équivalent, posé il y a moins d'un an
sur un groupe lié au mac, il avait été question d'utiliser les inodes,
justement...

notes que l'auteur original de "AJAX_File_Browser" ne s'est pas cassé
les pieds il a mis carément le path comme id sans-même encoder les
"/"...
et sur mac os x ça roule, mais il y a qq petits bugs dans ces scripts.
<http://gscripts.net/free-php-scripts/Listing_Script/AJAX_File_Browser/d
etails.html>
--
Une Bévue
Avatar
unbewusst.sein
Sergio wrote:


Les inode ? Qu'est-ce que ça vient faire là-dedans ?

Pour moi (http://fr.wikipedia.org/wiki/Inode ) les inodes sont des
structures de données propres au file-system (sous Unix notamment).
Quel est le rapport avec le codage HTML ?



euh, il ne s'agit pas de codage html, mais le but de la manip est
d'avoir un encodage d'un path quelconque (sous le DOCUMENT_ROOT du
serveur) en ID au sens HTML/CSS du terme càd :
commençant par une lettre A-Za-z
et ne contenant que :
A-Za-z0-9:.

pour l'instant j'ai choisi (solution de facilité provisoire) d'utiliser
"urlencode" côté php et encodeURIComponent côté JavaScript (ils ne sont
pas rigoureusement équivalents), puis remplaçement des "%" par ":".

ça marche pas mal chez moi mais je n'utilise pas de catactères accentués
dans les noms de fichiers, j'ai juste rencontré un problème avec un
fichier nommé "User's guide.txt", amha c'est le "'" qui pose pb.

--
Une Bévue
1 2 3