Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.4 Transfer: unqualifizierte, gleich benannte Topic- und Klassen-Elemente führen zu Fehler #420

Open
Tracked by #405
olivergrimm opened this issue Sep 3, 2024 · 16 comments

Comments

@olivergrimm
Copy link

olivergrimm commented Sep 3, 2024

Ausgangslage ist eine 2.4-Transferdatei zum Modell https://models.geo.admin.ch/V_D/DMAV_Bodenbedeckung_V1_0.ili, in welchem das Topic gleich heisst wie eine Klasse und in der XTF-Datei beide Elemente ohne qualifizierende Angabe aufgeführt sind:

  <ili:datasection>
    <!-- Topic -->
    <Bodenbedeckung ili:bid="33ae92cc-c46c-4518-bb01-378ed3c8f38a">
    ...
    <!-- Klasse -->
    <Bodenbedeckung ili:tid="f466894b-e8e0-4d79-8f99-9dded5930422">
        <Geometrie>

Der ilivalidator (1.14.3) scheitert bei der Validierung dieser Datei mit:

Error: class or association Bodenbedeckung not found

Gemäss Ref-HB, S.104, Kap. 4.3.7 ist in solchen Fällen von Namenskonflikten keine qualifizierende Elementangabe zu verlangen.

@olivergrimm olivergrimm mentioned this issue Sep 3, 2024
8 tasks
@edigonzales
Copy link
Contributor

@olivergrimm Ich finde besagtes Kapitel im Ref-HB nicht. Wie sieht eigentlich der Header aus mit den Namespaces?

@edigonzales
Copy link
Contributor

Ah, Kapitel 3.3.7 Seite 90 Ref-HB 2.4?

Nicht sicher, ob ich es gut finde, dass beides möglich ist (also qualifiziert und nicht-qualifiziert). Ist doch mühsamer mit XML-Werkzeugen damit zu arbeiten, wenn man nicht weiss, wie das XML-Element genau heisst. Aber vielleicht sehe ich die Genialität nicht.

@patrickackermann
Copy link
Contributor

Ja, Kapitel 3.3.7 im alten RefHB. Seit 4. Juli 2024 gibt es eine neue Version des INTERLIS Referenzhandbuchs (https://ech.ch/de/ech/ech-0031/2.1.0). Dort sind die Haupt-Kapitel Nummern anders.

@beistehen
Copy link

Genau!
Kapitel 3.3.7, Seite 90, RefHB 2.4 v2.0.0

ODER

Kapitel 4.3.7, Seite 104, RefHB 2.4 v2.1.0

😑

@edigonzales
Copy link
Contributor

Aaaaaaaah.

@edigonzales
Copy link
Contributor

Herrje und warum zeigt der Link auf interlis.ch auf die alte Version 2.0?

@olivergrimm
Copy link
Author

@edigonzales Ich wäre auch dafür, dass nur vollqualifiziert ausgeprägte Tags erlaubt wären.
Der Header der besagten Datei schaut so aus:

<?xml version="1.0" encoding="utf-8"?>
<ili:transfer xmlns:geom="http://www.interlis.ch/geometry/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.interlis.ch/xtf/2.4/DMAV_Bodenbedeckung_V1_0" xmlns:dmavgrafik="http://www.interlis.ch/xtf/2.4/DMAVTYM_Grafik_V1_0" xmlns:geomchlv95v2="http://www.interlis.ch/xtf/2.4/GeometryCHLV95_V2" xmlns:dmavgeom="http://www.interlis.ch/xtf/2.4/DMAVTYM_Geometrie_V1_0" xmlns:dmavmodinfo="http://www.interlis.ch/xtf/2.4/DMAVTYM_Modinfo_V1_0" xmlns:dmavqualitaet="http://www.interlis.ch/xtf/2.4/DMAVTYM_Qualitaet_V1_0" xmlns:ili="http://www.interlis.ch/xtf/2.4/INTERLIS">
  <ili:headersection>
    <ili:models>
      <ili:model>DMAV_Bodenbedeckung_V1_0</ili:model>
    </ili:models>
    <ili:sender>Sender</ili:sender>
  </ili:headersection>

@edigonzales
Copy link
Contributor

Ich dachte, es könnte mit dem Namespace zusammenhänge. Dem ist aber nicht so. Btw Namespace:

xmlns="%XMLNS%" | xmlns="http://www.interlis.ch/xtf/2.4/%ModelName%".

Kapitel 4.3.3. Wofür steht "%XMLNS%"?

@patrickackermann
Copy link
Contributor

%XMLNS% Steht für XML-NameSpace des Modells. Bei der Modell-Definition kann ein XML Namespace angegeben werden. Ist im Modell kein Namespace definiert wird http://www.interlis.ch/xtf/2.4/%ModelName% verwendet.

@edigonzales
Copy link
Contributor

@patrickackermann Merci. Heisst das, dass Daten des gleichen Modelles mit unterschiedlichen Namespaces transportiert werden können?

@patrickackermann
Copy link
Contributor

@edigonzales Nein, ein Modell hat immer genau einen XML-Namespace. Den in der Modell-Definition angegebenen oder den default Namespace (http://www.interlis.ch/xtf/2.4/%ModelName%) falls in der Modell-Definition kein Namespace angegeben wurde.

@claeis
Copy link
Owner

claeis commented Sep 24, 2024

Man kann nicht wählen ob qualifizierte oder nicht-qualifizierte Namen. Das ergibt sich aus den Namen.
Nur bei Konflikten wird der Name mit dem Topic-Namen qualifiziert.

%TopicName% muss nur für Klassen / Beziehungen angeben werden, für welche ein 
 Namenskonflikt mit Klassen / Beziehungen / Strukturen aus anderen Topics des 
 gleichen Modells besteht. 

@edigonzales
Copy link
Contributor

@patrickackermann Ich steh' auf dem. Schlauch. Was meinst du mit Modell-Definition?

Und warum können zwei Dateien, die Daten zum gleichen Thema transportieren, nicht einen anderen Namespace aufweisen?

Datei A:


<ili:transfer xmlns:DMAV_FixpunkteLV_V1_0="http://www.interlis.ch/xtf/2.4/DMAV_FixpunkteLV_V1_0"
              xmlns:ili="http://www.interlis.ch/xtf/2.4/INTERLIS">
   <ili:headersection>
      <ili:models>
         <ili:model>DMAV_FixpunkteLV_V1_0</ili:model>
      </ili:models>
      <ili:sender>Sender</ili:sender>
   </ili:headersection>

Datei B:


<ili:transfer xmlns:DMAV_FixpunkteLV_V1_0="http://fubar.ch"
              xmlns:ili="http://www.interlis.ch/xtf/2.4/INTERLIS">
   <ili:headersection>
      <ili:models>
         <ili:model>DMAV_FixpunkteLV_V1_0</ili:model>
      </ili:models>
      <ili:sender>Sender</ili:sender>
   </ili:headersection>

Ist das inkorrekt?

@edigonzales
Copy link
Contributor

Man kann nicht wählen ob qualifizierte oder nicht-qualifizierte Namen. Das ergibt sich aus den Namen. Nur bei Konflikten wird der Name mit dem Topic-Namen qualifiziert.

%TopicName% muss nur für Klassen / Beziehungen angeben werden, für welche ein 
 Namenskonflikt mit Klassen / Beziehungen / Strukturen aus anderen Topics des 
 gleichen Modells besteht. 

"Nur bei Konflikten wird ...": Das lese ich aber im zitierten Text anders. Im Fall eines Konfliktes MUSS qualifiziert werden, sonst ist es aber nicht verboten. Und im besagten Bodenbedeckungsbespiel gibt es ja keinen Konflikt mit Klassen etc. im gleichen Topic.

@patrickackermann
Copy link
Contributor

@edigonzales

Und warum können zwei Dateien, die Daten zum gleichen Thema transportieren, nicht einen anderen Namespace aufweisen?

Weil der Namespace nach Referenzhandbuch genau definiert ist. Kapitel 4.3.3 Allgemeiner Aufbau der Transferdatei:

Enthält das Modell eine explizite Namespace Definition (XMLNS; vgl. Regel ModelDef), wird
diese übernommen. Andernfalls wird der Namespace aus "http://www.interlis.ch/xtf/2.4/" und
dem ModelName gebildet.

Je nach Modell definition ist entweder Datei A oder Datei B nicht korrekt.

@edigonzales
Copy link
Contributor

@patrickackermann Aaaah, der Groschen ist glaubs gefallen:

"Enthält das Modell eine explizite Namespace Definition (XMLNS; vgl. Regel ModelDef), wird
diese übernommen. Andernfalls wird der Namespace aus "http://www.interlis.ch/xtf/2.4/" und
dem ModelName gebildet."

Da kann man wirklich in der ili-Datei einen Namespace definieren.

Merci.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants