this fileをソースとして使用すると、ローカルソースファイルまたはインポートに記載されている関連ソースファイルから要素を取得する必要があります。タイプ値はコロンを使用して2つの値を区切ります。-substring-before(@type、 ':')はどのファイルを参照するかを教えます。 substring-after(@type、 ':')は、コピーする必要のあるファイル内の要素の名前です。&は同じ方法でその内容を繰り返します。XSLT:Copy現在の型の値が要素の名前と等しい場合
例:名前が "PersonType"のxs:complexTypeが必要なので、copy-ofを使用してその子とその子を取得します。次のステップは、それらの子どもを見ることです - xs:elementであるものについては、タイプ値( "AcRec:HighSchoolType")で参照されている要素を取得します。 "AcRec"はどのxsdを使用する必要があるかを教えてくれるので、名前値が "HighSchoolType"のxsdで何かを見つけるでしょう。 AcRec xsdを見ると、 "HighSchoolType"はxs:complexType(私は既にテンプレートで処理するように定義されています)であることがわかりますので、出力を確認してください。私は私が正常にXSLを入力すると、ドキュメント内の探してについて何をしないのです
<xs:complexType name="PersonType">
<xs:sequence>
<xs:element name="HighSchool" type="AcRec:HighSchoolType" minOccurs="0">
</xs:sequence>
</xs:complexType>
<xs:complexType name="HighSchoolType">
<xs:sequence>
<xs:element name="OrganizationName" type="core:OrganizationNameType"/>
<xs:group ref="core:OrganizationIDGroup" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
:とき
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="/">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:core="urn:org:pesc:core:CoreMain:v1.2.0" xmlns:AcRec="urn:org:pesc:sector:AcademicRecord:v1.1.0">
<xsl:apply-templates select="//xs:complexType[@name='PersonType']" />
</xs:schema>
</xsl:template>
<xsl:template match="xs:complexType">
<xsl:copy>
<xsl:copy-of select="node()[not(xs:annotation | xs:restriction)]|@*"/>
</xsl:copy>
<xsl:apply-templates select=".//xs:element" />
</xsl:template>
<xsl:template match="xs:simpleType">
<xsl:copy>
<xsl:copy-of select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xs:element">
<xsl:choose>
<xsl:when test="substring-before(@type, ':') = 'AcRec'">
<xsl:text>AcRec</xsl:text>
<xsl:apply-templates select="document('[local file path]AcademicRecord_v1.3.0.xsd')//*[@name=substring-after(@type, ':')]" />
</xsl:when>
</xsl:choose>
</xsl:template>
所望の出力は次のようになりますか? xsl:textは私が入っていると伝えますが、後続の行は出力を返しません。
さらに、xs:complextType & xs:simpleType要素をコピーするときに、xs:annotationとxs:restriction要素が表示されないようにするにはどうすればよいですか?私はdpawsonサイトで言及された例を動作させることができませんでした。
例を含めるように投稿を更新しました - あなたが示唆した除外事項で幸運がありませんでした - アノテーション/制限要素に関連付けられた子どもがいるかどうかは重要ですか? –
ええと...私は注釈の自己::軸を忘れてしまった/制限セグメント。適切に改訂されました。 –