У меня есть xml, который может иметь иногда узел DSD_G22, но не всегда. Таким образом, если этот узел присутствует затем получить значение элементов в противном случае присвоить пустым: вход 1 сценарий:Как проверить, присутствует ли узел в файле или нет
<root>
<G_83>
<G_8301/>
<G_8302/>
</G_83>
<DSD_G22>
<DSD_G22_G2201>Value</DSD_G22_G2201>
<DSD_G22_G2202>Value1</DSD_G22_G2202>
</DSD_G22>
</root>
Сценарий вход 2:
<root>
<G_83>
<G_8301/>
<G_8302/>
</G_83>
</root>
Выход для сценария 2 должно быть:
<G_83>
<G_8301/>
<G_8302/>
</G_83>
<DSD_G22>
<DSD_G22_G2201/>
<DSD_G22_G2202/>
<DSD_G22/>
</root>
Я попытался сделать это, но не работает. Пожалуйста, помогите:
<xsl:variable name="emptySpace" select="' '" />
<xsl:if test="@DSD_G22">
<xsl:if test="@DSD_G22_G2201">
<xsl:attribute name="DSD_G22_G2201">
<xsl:value-of select="@DSD_G22_G2201" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@DSD_G22_G2202">
<xsl:attribute name="DSD_G22_G2202">
<xsl:value-of select="@DSD_G22_G2202" />
</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="not(@DSD_G22)">
<xsl:attribute name="DSD_G22_G2201">
<xsl:value-of select="@emptySpace " />
</xsl:attribute>
<xsl:attribute name="DSD_G22_G2202">
<xsl:value-of select="@emptySpace" />
</xsl:attribute>
</xls:if>
Не могли бы вы, пожалуйста, указать, что Шоуда быть выход из сценария 1 (когда элемент настоящее)?. Кроме того, вы предоставили неполный код - неясно, что соответствует шаблону, и к какому элементу должны быть прикреплены сгенерированные атрибуты. Пожалуйста, отредактируйте свой вопрос и предоставите полный (но как можно меньше) пример. –
Возможный дубликат [xpath find, если узел существует] (http://stackoverflow.com/questions/767851/xpath-find-if-node-exists) –