Bonjour, je viens vers vous par ce que je commence à utiliser parcours, et j’avais envie d’avoir comme dans CANOPROF les références des compétences par matière dans la partie pédagogique.
Après une petite analyse du Modèle Canoprof j’ai récupéré le fichier notion.xml que j’ai converti avec un petit script python, je ne sais pas utiliser xslt .
Et j’ai fait des fichiers .ref avec plusieurs matières.
Oui c’est cela, sauf que la matière ou c’est le fichier REF et le contenu le référentiel ( les compétences comme sur la vidéo) , en fait, cela a été fait dans le modèle CANOPROF.
voici le fichier utilisé par canoprof notions.xml (740,9 Ko)
j’ai fait un script en python qui l’a transformé en plusieurs fichiers .ref par matière exemple pour la technologie / renommer ref pour l’inclure dans parcours ( voir le fichier scar au-dessus ) . sciences et technologie (discipline).xml (71,0 Ko)
Mais la base vient des fichiers SCOLOM.fr et ce sont des références croisées dans plusieurs fichiers.
Tu remarqueras aussi qu’à la génération du fichier xml dans id j’ai ajouté -XXX pour qu’il soit unique dans scenari, parce que la compétence peut-être la même dans plusieurs matières /niveau.
import xml.etree.ElementTree as ET
import random
# Charger le fichier XML d'entrée
tree = ET.parse('notions.xml')
root = tree.getroot()
# Fonction récursive pour traiter les sous-listes
def convertir_element(element, parent):
K = ''
for sous_element in element:
nouveau_elt = ET.SubElement(parent, "sp:elt")
nouveau_element = ET.SubElement(nouveau_elt, "fw:element")
K = sous_element.attrib.get('k','')
randuppercase = chr(random.randint(ord("A"), ord("Z")))+chr(random.randint(ord("A"), ord("Z")))+chr(random.randint(ord("A"), ord("Z")))
if not K:
K = randuppercase
else :
K = K +"-"+randuppercase
print(K)
nouveau_element.set("xml:id", K)
elementM = ET.SubElement(nouveau_element, "fw:elementM")
element_title = ET.SubElement(elementM, "sp:title")
element_title.text = sous_element.attrib.get('v', '')
if sous_element.tag.endswith('List'):
convertir_element(sous_element, nouveau_element)
for child in root:
# Créer un nouvel élément racine pour le nouveau format
nouvelle_racine = ET.Element("{http://www.utc.fr/ics/scenari/v3/core}item")
nouvelle_racine.set("xmlns:sc", "http://www.utc.fr/ics/scenari/v3/core")
nouvelle_racine.set("xmlns:sp", "http://www.utc.fr/ics/scenari/v3/primitive")
nouvelle_racine.set("xmlns:fw", "sc.soft:framework")
print(child.tag,"->",child.attrib)
titre = child.attrib.get('v')
print(child.attrib.get('v'))
# Créer les éléments pour le framework
framework = ET.SubElement(nouvelle_racine, "fw:framework")
frameworkM = ET.SubElement(framework, "fw:frameworkM")
framework_title = ET.SubElement(frameworkM, "sp:title")
framework_title.text = child.attrib.get('v')
# Convertir les éléments du premier format en éléments du deuxième format
convertir_element(child, framework)
# Créer un nouvel arbre XML avec la nouvelle racine
nouvel_arbre = ET.ElementTree(nouvelle_racine)
# Enregistrer le fichier converti
FichierSorti = child.attrib.get('v') + ".ref"
nouvel_arbre.write(FichierSorti, encoding='utf-8', xml_declaration=True)
J’espère que je suis un peu plus clair dans mes explications avec mon peu de maitrise xml et python.
Bonjour,
Bravo pour votre script.
Je suis actuellement en train de travailler sur une prochaine version de Canoprof. Une des mises à jour sera en effet le passage à SCOLOMfr 10.1.
J’en ai profité pour produire automatiquement deux items framework.ref compatibles Opale et Parcours. Je n’ai pas éclaté le référentiel des notions en plusieurs fichiers, je vous laisse les modifier à votre sauce : scolomfr_10-1.scar (180.5 KB)
Bonjour Sam, merci pour ce partage, je me doutais bien qu’il y aurait une évolution de Canoprof dans ce sens.
Est-ce que tu fais cela avec un script ( python ) depuis la base SCOLOMfr ?
Est-ce qu’il est possible que nous puissions aussi dans nos publications mettre des champs identiques pour le référencement ?
Est-ce que l’on peut mettre en news ce fichier je pense que ceux qui utilisent « PARCOURS » pourraient être intéressés
Les sources du modèle Canoprof contiennent un script Node.js qui prend en entrée le fichier RDF globale issu du site SCOLOMfr pour en extraire une partie et générer l’ensemble des fichiers nécessaires à l’intégration dans Canoprof. Ce script produit également maintenant des items framework génériques SCENARI pour un usage dans d’autres modèles documentaires.
C.f. le fichier readme.md pour plus d’information.
Quand vous parlez de « nos publications », vous faite référence à quoi au juste ?
Parcours n’intégrera pas SCOLOMfr en dur comme Canoprof, cela n’aurait aucun sens pour grand nombre d’utilisateurs de Parcours. Nous utilisons un système d’items référentiels externalisés justement pour que chaque auteur puisse se construire sa propre base en relation avec son domaine.
On pourra en effet réfléchir à la mise à disposition de ce scar de façon plus visible.
Bonjour Sam,
Merci beaucoup pour ces informations, même si je n’ai pas de compétences en js, les différents scripts sont bien lisibles, dans mon temps libre, je testerai cela.
Pour les publications, effectivement c’est de trouver un moyen de mettre en avant les fichiers scar pour les enseignants comme moi qui utilisent Opale et Parcours en parallèle de canoprof et qui souhaitent retrouver les compétences travaillées du programme officiel de l’Education National de manière bien structurée, comme nous pouvons l’avoir dans dans Pronote par exemple.
Est-ce qu’un tuto serait possible dans les contributions et une information dans la newsletter.