2016-08-01 1 views
1

XML 파일을 변환하려는 XSL 파일이 있습니다. 이 XML 파일은 .safe 확장명을 가진 원본 파일의 이름을 변경하여 얻은 것입니다. 여기 당신이 첫 선을XSL 변환 - 네임 스페이스 접두사가 선언되지 않음

<?xml version="1.0" encoding="UTF-8"?> 
<xfdu:XFDU xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" 
xmlns:xfdu="urn:ccsds:schema:xfdu:1" xmlns:safe="http://www.esa.int/safe/sentinel-1.0" xmlns:s1="http://www.esa.int/safe/sentinel-1.0/sentinel-1" 
xmlns:s1sar="http://www.esa.int/safe/sentinel-1.0/sentinel-1/sar" xmlns:s1sarl1="http://www.esa.int/safe/sentinel-1.0/sentinel-1/sar/level-1" 
xmlns:s1sarl2="http://www.esa.int/safe/sentinel-1.0/sentinel-1/sar/level-2" xmlns:gx="http://www.google.com/kml/ext/2.2" 
version="esa/safe/sentinel-1.0/sentinel-1/sar/level-1/slc/standard/iwdp"> 

의 내가 호출하면 (내가 이런 식으로

<xsl:template match="/"> 
<xsl:value-of select="/metadataSection/metadataObject/metadataWrap/xmlData/safe:acquisitionPeriod/safe:startTime" /> 
</xsl:template> 

나에 노력하고있어 값 오름차순에게

<metadataObject ID="measurementOrbitReference" classification="DESCRIPTION" category="DMD"> 
    <metadataWrap mimeType="text/xml" vocabularyName="SAFE" textInfo="Orbit Reference"> 
    <xmlData> 
     <safe:orbitReference> 
     <safe:orbitNumber type="start">11987</safe:orbitNumber> 
     <safe:orbitNumber type="stop">11987</safe:orbitNumber> 
     <safe:relativeOrbitNumber type="start">15</safe:relativeOrbitNumber> 
     <safe:relativeOrbitNumber type="stop">15</safe:relativeOrbitNumber> 
     <safe:cycleNumber>83</safe:cycleNumber> 
     <safe:phaseIdentifier>1</safe:phaseIdentifier> 
     <safe:extension> 
      <s1:orbitProperties> 
      <s1:pass>ASCENDING</s1:pass> 
      <s1:ascendingNodeTime>2016-07-03T17:02:32.742483</s1:ascendingNodeTime> 
      </s1:orbitProperties> 
     </safe:extension> 
     </safe:orbitReference> 
    </xmlData> 
    </metadataWrap> 
</metadataObject> 

를 추출하고 싶은 말을하게 볼 수 있습니다 이 파일을 외부 XML 파일로 사용)

<xsl:value-of select="document('file:///C:/workspace/S2_XSLtest/S1_XSLtest/NEW_S1manifest.xml')/metadataSection/metadataObject/metadataWrap/xmlData/safe:acquisitionPeriod/safe:startTime" /> 

두 경우 모두 다음 오류가 발생합니다.

ERROR [main] JAXPSAXProcessorInvoker - 이름 공간 접두사 'safe'가 선언되지 않았습니다.

나는 XSL 변환을 사용하는 사람이기 때문에 어떤 제안이라도 정말 감사 할 것입니다. 내가 ECLIPSE 버전으로 Windows 시스템을 사용하고 있습니다 : Mars.2 출시 (4.5.2)

답변

1

당신은 당신의 XSLT에

xmlns:safe="http://www.esa.int/safe/sentinel-1.0" 

을 포함해야 가장 최상위 레벨 :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:safe="http://www.esa.int/safe/sentinel-1.0" ... 
+0

제안에 감사드립니다 !! 그것은 작동합니다! –

관련 문제