Bonjour,
Traitement souhaité sur mon fichier xsd :
Connaissant le nom du répertoire racine (Arbre), je voudrais réccuperer le nom du sous élément (Branche) dans une variable.
J'ai commencé mon script mais je ne sais pas quelle fonction utiliser pour reccuperer le nom du sous élément (je ne peux pas utiliser grep puisqu'il y a d'autres lignes du meme type...)
Merci !
Mon script :
# Je reccupere la ligne de debut de la declaration des sous element
ligne=$(grep -m 1 " *<xsd:complexType name=\"Arbre\">" fichier.xsd)
echo $ligne
if [ $? = 1 ]; then
echo "Declaration des sous elements intouvable"
exit
else
# Je reccupere le numero de la ligne de debut de la declaration des sous element
numero=$(grep -n "$ligne" fichier.xsd | cut -d: -f1)
echo $numero
fi
# La je voudrais effectuer une lecture a partir du numero de ligne reccuperé
# pour reccuperer la ligne ou est declaree le sous element Branche
Le fichier xsd:
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns="" xmlns:xsd=" http://www.w3.org/2001/XMLSchema">
<xsd:element name="Arbre" type="Arbre"/>
<xsd:complexType name="Arbre">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Branche" type="Branche"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Branche">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Feuille1" type="Feuille1"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Feuille2" type="Feuille2"/>
</xsd:sequence>
<xsd:attribute name="contenance" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="Feuille1">
<xsd:attribute name="nom" type="xsd:string" use="required"/>
<xsd:attribute name="numero" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="Feuille2"/>
</xsd:schema>

C'était
sed -n '/'"$debut"'/,/<\/xsd:complexType>/{/<xsd:attribute/p;}' fichier.xsd
Je voudrai lire les lignes qui se trouvent entre les balises <xsd:complexType name="Feuille1"> et sa balise fermante.
et reccuperer le nom des attributs, leurs type et leurs "use"
Le problème est que je ne connais pas le nombre d'attributs qu'il peut y avoir, il peut y en avoir n...
La commande sed serait donc inefficace pour ce genre de traitement (vu qu'on ne sait pas le nombre de "n;" qu'il faudra faire)
Ayant traité la ligne (<xsd:complexType name="Feuille1">) auparavent, je connais son numéro de ligne.
Comment pourrai je faire ?