XSL에서 값이 null인지 또는 비어 있는지 어떻게 확인할 수 있습니까?
예를 들어 categoryName
비어 있다면 ?
이것은 아마도 가장 간단한 XPath 표현식 일 것입니다 (허용 된 답변의 답변은 반대에 대한 테스트를 제공하고 부정하면 더 길어집니다).
not(string(categoryName))
설명 :
받는 인수 not()
위의 함수는 false()
이 '노 정확히 categoryName
컨텍스트 항목의 하위 ( "널 (null)"가) 또는 (단일 등) categoryName
빈 문자열 - 아이가 문자열 값이 있습니다.
구문을 선택할 때를 사용하고 있습니다.
예를 들면 다음과 같습니다.
<xsl:choose>
<xsl:when test="categoryName !=null">
<xsl:value-of select="categoryName " />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="other" />
</xsl:otherwise>
</xsl:choose>
XSLT 2.0에서는 다음을 사용하십시오 .
<xsl:copy-of select="concat(categoryName, $vOther[not(string(current()/categoryName))])"/>
다음은 완전한 예입니다 .
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vOther" select="'Other'"/>
<xsl:template match="/">
<xsl:copy-of select="concat(categoryName,$vOther[not(string(current()/categoryName))])"/>
</xsl:template>
</xsl:stylesheet>
이 변환이 다음 XML 문서에 적용되는 경우 :
<categoryName>X</categoryName>
원하는 올바른 결과가 생성됩니다 .
X
이 XML 문서에 적용되는 경우 :
<categoryName></categoryName>
또는 이것에 :
<categoryName/>
또는 이것에
<somethingElse>Y</somethingElse>
올바른 결과가 생성됩니다 .
Other
마찬가지로이 XSLT 1.0 변환을 사용하십시오 .
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vOther" select="'Other'"/>
<xsl:template match="/">
<xsl:copy-of select=
"concat(categoryName, substring($vOther, 1 div not(string(categoryName))))"/>
</xsl:template>
</xsl:stylesheet>
참고 : 조건이 전혀 사용되지 않습니다. 이 멋진 Pluralsight 코스에서 조건부 구성을 피하는 것이 중요하다는 것에 대해 자세히 알아보십시오.
" .NET의 전술 디자인 패턴 : 제어 흐름 "