2017-11-21 5 views
0

개체 xmlns ...은 XML의 내 루트 요소입니다. XSLT에서 선언하는 방법? <xsl:template match="objects">이 작동하지 않습니다. 루트 요소 Object는 또한 처리하려는 모든 XML에서 끝나는 타임 스탬프를 가지고 있습니다.XML의 루트 요소가 매우 긴 경우 XSL에서 <xsl : template match>를 선언하는 방법

<?xml version="1.0" encoding="UTF-8"?> 
<objects xmlns="33a8cae1-a9fa-4655-8c3d-b71241bbc99b" base-schema="179" user-schema="207" timestamp="2017-11-21T16:07:50+01:00"> 
    <objekttyp> 
    <_version>19</_version> 
    <_id>364</_id> 
    <_objecttype>objekttyp</_objecttype> 
    <_system_object_id>458</_system_object_id> 
    <_global_object_id>[email protected]</_global_object_id> 
    <_uuid>4dfa0f0c-2172-4fa8-be83-34d79ac58cc1</_uuid> 
    <_mask>objekttyp__all_fields</_mask> 
    <_last_modified>2017-08-17T16:43:28Z</_last_modified> 

답변

1

길이는 문제가 아닙니다. 귀하의 XML 괜찮 지정되지 않은 네임 스페이스를 가지고 있지만, 당신이 그것을 참조 할 때 XSL에서, 당신은

<?xml version="1.0" encoding="UTF-8"?> 
<objects xmlns="33a8cae1-a9fa-4655-8c3d-b71241bbc99b" base-schema="179" user-schema="207" timestamp="2017-11-21T16:07:50+01:00"> 
    <objekttyp> 
    <_version>19</_version> 
    <_id>364</_id> 
    <_objecttype>objekttyp</_objecttype> 
    <_system_object_id>458</_system_object_id> 
    <_uuid>4dfa0f0c-2172-4fa8-be83-34d79ac58cc1</_uuid> 
    <_mask>objekttyp__all_fields</_mask> 
    <_last_modified>2017-08-17T16:43:28Z</_last_modified> 
    </objekttyp> 
</objects> 

참고 의 xmlns를 (당신이 어떤 접두사를 사용할 수 있습니다) 네임 스페이스를 선언 할 필요에 당신은해야합니다 : ns = "33a8cae1-a9fa-4655-8c3d-b71241bbc99b" 네임 스페이스는 XML과 동일한 문자열을 가리 킵니다.

ns : 네임 스페이스가 XSL의 모든 XPath 문에 추가됩니다.

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" 
xmlns:ns="33a8cae1-a9fa-4655-8c3d-b71241bbc99b" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> 

<xsl:variable name='objects' select='//ns:objects'/> 

<xsl:template match="/"> 
    <xsl:for-each select='$objects'> 
     <object> 
      <xsl:for-each select='ns:objekttyp'> 
       <xsl:attribute name='lastmodified'><xsl:value-of select='ns:_last_modified'/></xsl:attribute> 
      </xsl:for-each> 
     </object> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

<?xml version="1.0" encoding="utf-16"?> 
<object lastmodified="2017-08-17T16:43:28Z" xmlns:ns="33a8cae1-a9fa-4655-8c3d-b71241bbc99b"> 
</object> 
를 작성합니다