gpt4 book ai didi

xml - XSL 转换 - 命名空间前缀未声明

转载 作者:行者123 更新时间:2023-12-04 02:10:49 24 4
gpt4 key购买 nike

我有一个 XSL 文件,我想将其转换为 XML 文件。此 XML 文件是通过重命名具有 .safe 扩展名的原始文件而获得的。在这里你可以看到它的第一行

<?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">

假设我想提取 ASCENDING 的值

<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>

我正在尝试这种方式

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

或者(如果我将此文件称为外部 XML 文件)

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

在这两种情况下,我都会收到以下错误:

错误 [main] JAXPSAXProcessorInvoker - namespace 前缀“safe”未声明。

任何建议都将不胜感激,因为我是 XSL 转换的初学者。我正在使用带有 ECLIPSE 版本的 WINDOWS 机器:Mars.2 Release (4.5.2)

最佳答案

你必须包括

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

在您的 xslt 中,最好在顶层:

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

关于xml - XSL 转换 - 命名空间前缀未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38700926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com