Я работаю над интерфейсом со сторонним приложением, которому, в основном, нужно взять XML, выделенный приложением, и преобразовать его в XML, с которым может справиться наша система. По сути, это просто применение таблицы стилей к исходному XML, чтобы он выглядел как «наш» XML. Я заметил, что в других имеющихся у нас таблицах стилей есть такие конструкции:
<xsl:for-each select="State">
<StateAbbreviation>
<xsl:value-of select="."/>
</StateAbbreviation>
</xsl:for-each>
По сути, «in» XML имеет тег State, который мне нужно вывести как наш распознанный тег StateAbbreviation. Тем не менее, я хочу вывести ТОЛЬКО тег StateAbbreviation, если «in» XML содержит тег State. Блок выше выполняет это просто отлично, но не очень интуитивно (по крайней мере, не для меня), так как каждый раз, когда я вижу for-each
, я предполагаю, что их больше одного, тогда как в этих случаях есть 0 или 1 .
Мой вопрос: это стандартная конструкция? Если нет, есть ли более предпочтительный способ сделать это? Я мог бы, очевидно, проверить длину строки (что также делается в других таблицах стилей), но хотел бы сделать это одинаково, «лучшим» способом везде (при условии, конечно, что существует «лучший» способ. Совет? Предложения?