3

現在、サードパーティのシステムからTridionにコンテンツをインポートするために使用されているアプリケーションをアップグレード中です。現在のCMSはTridion2009であり、新しいインスタンスはTridion 2011SP1HR1になります。

私たちが遭遇した課題は、検証する複雑なスキーマを取得できないことです。以下に実際の例(2009年に機能)を含めました。これはSDL Tridion 2009で検証されます。ただし、Tridion 2011のCMEを使用して同じスキーマを作成しようとすると、「検証」を選択するとエラーが発生します。それ

'ref'属性の値が無効です='xlink:href'は'ref'属性の無効な値です。

私はしばらく読んで(これは、かなりのコンテンツがすでに押し付けられている、手に負えない複雑なスキーマです!)、信じていますか?名前とタイプをそのまま使用することはできません(または、この「グローバル」パラメータをローカルで定義することはできません。できれば、これは「あまり良くない」方法ではないでしょうか?。これは、XMLを更新することで解決できると思います。 (<attribute ref = "...">のxml問題から)しかし、これは修正できないものです。

コメント/ポインタは素晴らしいでしょう!ありがとう

<xs:schema targetNamespace="http://www.ccc.com/tridion/pelements" elementFormDefault="qualified" xmlns:tcm="http://www.tridion.com/ContentManager/5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tcmapi="http://www.tridion.com/ContentManager/5.0/TCMAPI" xmlns="http://www.ccc.com/tridion/pelements" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="cm_lnk.xsd"/>
    <!--maps to DITA element: xref -->
    <xs:element name="link" type="reference"/>
  <xs:complexType name="reference">
    <xs:sequence>
      <xs:element name="title" minOccurs="1" maxOccurs="1" type="xs:string"/>
      <xs:choice>
        <xs:element name="internal">
          <xs:complexType>
            <xs:attribute ref="xlink:href" use="required"/>
            <xs:attribute ref="xlink:title" use="optional"/>
          </xs:complexType>
        </xs:element>
        <xs:element name="external">
          <xs:complexType>
            <xs:attribute name="href" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string"/>
    </xs:sequence>
    <xs:attribute name="type" type="referenceType" use="required"/>
  </xs:complexType>
  <!-- ******************** Enumerations ************************** -->
  <xs:simpleType name="referenceType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="normal"/>
      <xs:enumeration value="binary"/>
      <xs:enumeration value="embedded"/>
      <xs:enumeration value="reusable"/>
      <xs:enumeration value="component"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

更新: 続行できるように、xsdスキーマに変更を加えました。

<xs:attribute ref="xlink:href" use="required"/>
<xs:attribute ref="xlink:title" use="optional"/>

<xs:attribute name="href" type="xs:anyURI" use="required"/>
<xs:attribute name="title" type="xs:string" use="optional"/>

これは実際には2011バージョンのcm_lnk.xsdからのものです。refは実際にはxlink:href属性への参照である必要があるため、これはまだ正しくない可能性があります-この変更でテスト/監視する可能性のある落とし穴を知っている人はいますか?

UPDATE(CSから) CSは、これをR&Dで調査し、2009年には有効なスキーマであり、2011年には無効であることに同意したようです。チケットはクローズされましたが、これをフォローアップして確認するのは興味深いことです。これが2013年に解決された場合、または別のアプローチとして受け入れられた場合はどうなりますか?

4

1 に答える 1

2

使用する

<xs:attribute name="href" type="xs:anyURI" use="required"/>
<xs:attribute name="title" type="xs:string" use="optional"/>

それ以外の

<xs:attribute ref="xlink:href" use="required"/>
<xs:attribute ref="xlink:title" use="optional"/>

cm_lnk.xsdとにかく参照するつもりだったので、完全に問題ありません。これは、変更が発生した場合は、それcm_lnk.xsdに応じてスキーマも変更する必要があることを意味します。しかし、cm_lnk.xsdスキーマがその定義を変更することは決してないため、これは理論上です。

さらに興味深いのは、これが2009バージョンで機能したことです。これは、2011リリースがインポートを処理できないように見えることを示しています。

<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="cm_lnk.xsd"/>

ドミニクがすでに述べたように、私は実際にこれのCSチケットを上げて、それを見ることができるようにします。回避策は完全に有効ですが、将来のリリースで修正できるように欠陥を報告することは常に良いことです。

于 2012-11-28T10:01:34.847 に答える