3
xsl : key 및 xpath 함수 key() 및 id()를 사용하여 XSL 변환에 XMLSchema 내에서 ID/IDREFS를 사용해야하는 방법은 무엇입니까? 나는 다음과 같은 DTD를 사용하는 경우XML 스키마에서 ID/IDREFS 사용
모두
<!ELEMENT role EMPTY>
<!ATTLIST role
name ID #REQUIRED>
<!ELEMENT usecases (usecase)+>
<!ELEMENT usecase EMPTY>
<!ATTLIST usecase
roles IDREFS #REQUIRED
name CDATA #REQUIRED>
내가 XSL 정의 할 수 있습니다 괜찮 : 키를 키()와 ID를 (사용) 성공적으로 XPath 함수
<xsl:key name="usecase2role" match="usecase" use="id(@roles)/@name" />
<xsl:template match="role">
<xsl:apply-templates select="key('usecase2role', @name)" mode="byrole">
<xsl:with-param name="roleName" select="@name"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="usecase" mode="byrole">
<xsl:param name="roleName"/>
insert into permission(roleId, usecaseId) values (<xsl:value-of select="$roleName"/>, <xsl:value-of select="@name"/>);
</xsl:template>
하지만 마이그레이션하는 경우 내 DTD를 XMLSchema로 변환하면 같은 XSL 변환으로 빈 문서가 생성됩니다.
<xsd:complexType name="role">
<xsd:attribute name="name" type="xsd:ID" use="required"/>
</xsd:complexType>
<xsd:complexType name="usecase">
<xsd:attribute name="name" use="required"/>
<xsd:attribute name="roles" use="required" type="xsd:IDREFS"/>
</xsd:complexType>
ID/IDREFS의 사용법이 잘못되어 XML 키로 변경해야합니까? 그러나 XML 키워 드 (XML keyrefs)와 같은 것이 없기 때문에 많은 마이그레이션이 가능합니까?
종류는 아직이 기능을 사용하지 않은 도미니크
질문 샘플에서 스키마에 'usecases' 요소의 정의가 누락 된 이유는 무엇입니까? –