У меня есть контент DITA.xslt 2.0 проверяет, ссылается ли элемент на несколько других элементов в одной папке
Карта Дита выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
"../dtd/technicalContent/dtd/map.dtd">
<map id="e7de5b">
<title/>
<topicmeta>
<othermeta name="title" content="File Loader Guide for SAP HANA"/>
<othermeta name="status" content="Authoring:closed"/>
</topicmeta>
<topicref href="9df1475208c.xml"/>
<mapref href="ec152470.ditamap"/>
</map>
В этой папке, я знаю, что это главная карта, поскольку он ссылается на единственную другую карту DITA (<mapref href="ec152470.ditamap"/>
). Базисно, основная карта папки - это карта, на которую не ссылается никакая другая карта в той же папке (может быть любое количество карт).
У меня есть файл, который содержит список всех карт, как это:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<maps>
<map path="Path\ToTheMap" name="e7de5b.ditamap" />
<map path="Path\ToTheMap" name="ec152470.ditamap" />
</maps>
Какой самый лучший способ проверить, если карта является основной карте в папке, я. е. проверить, ссылается ли на нее другая карта в той же папке?
До сих пор я получил:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="fo fn xs">
<xsl:output method="xml" encoding="utf-8" standalone="yes"/>
<xsl:template match="/">
<docMaps>
<xsl:apply-templates/>
</docMaps>
</xsl:template>
<xsl:template match="maps">
<xsl:for-each-group select="map" group-by="@path">
<xsl:choose>
<xsl:when test="count(current-group()) = 1">
<mapdoc path="{current-grouping-key()}" name="{@name}"/>
</xsl:when>
<xsl:otherwise>
<!-- check -->
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
Если есть только одна карта в папке, это тривиально. Но в другом случае ... я пробовал - каждый цикл, но я не могу понять это.
Любая помощь высоко оценена!
Спасибо за ответ! Я буду работать, чем в свой код в ближайшие дни, и посмотреть, не сделал ли это трюк. – user3813234