Сочетание исправления опечаток и лучшей методологии, которую я понял прошлой ночью, кажется решением проблемы.Извиняюсь за то, что это не полностью полный документ xsl, но суть решения заключается в ...
<xsl:for-each select="gmi:acquisitionInformation/*">
<xsl:for-each select=".//gmi:MI_Operation">
<operationDetails>{
<xsl:for-each select="./*[name() != 'gmi:platform']">
"<xsl:value-of select="name()"/>":"<xsl:value-of select="."/>",
</xsl:for-each>
}</operationDetails>
</xsl:for-each>
<xsl:for-each select=".//gmi:MI_Platform">
<platformDetails>{
<xsl:for-each select="./*[name() != 'gmi:instrument']">
"<xsl:value-of select="name()"/>":"<xsl:value-of select="."/>",
</xsl:for-each>
}</platformDetails>
</xsl:for-each>
<xsl:for-each select=".//gmi:MI_Instrument">
<instrumentDetails>{
<xsl:for-each select="./*">
"<xsl:value-of select="name()"/>":"<xsl:value-of select="."/>",
</xsl:for-each>
}</instrumentDetails>
</xsl:for-each>
</xsl:for-each>
Для тех, кто хочет использовать это в GeoNetwork, я поместил это непосредственно в разделе для gmd:distributionInfo (начиная со строки <xsl:for-each select="gmd:distributionInfo/*>
) в плагине моей схемы index-fields\index.xsl
.Это поднимает блок gmi:acquisitionInformation
в пределах gmi:MI_Metadata
при условии, что вы также измените соответствие корневого шаблона для размещения gmi:MI_Metadata
.