XML을 HTML로 변환하는 스타일 시트에서 XSLT 2.0 요소 analyze-string을 사용합니다. 특히, 화학 공식의 첨자에 대한 문자열 인코딩을 HTML 첨자로 변환하는 데 사용합니다. 따라서 결과는 p 또는 td 요소에 삽입 된 마크 업과 함께 표시되는 문자열입니다.XSLT 2.0을 사용하여 줄 바꿈을 제거합니다. analyze-string
변환이 2 O하지만 사실 H 같은 출력을 생성하도록되어는 HTML에서 선 파쇄 삽입 :
H
<sub>2</sub>O
를이 틈 공간으로서 브라우저에 의해 해석 (정확하게) 인 :
추한 H 2 O
.
줄 바꿈을 제거 할 수있는 방법이 있습니까? 전체 분석 문자열 요소를 한 줄에 넣으려고했는데 작동하지 않습니다.
입력은 더-복잡 하나
<OrdinaryStructralFormula>H$_2$O</OrdinaryStructuralFormula>
간단한 경우에 대한
및
<OrdinaryStructralFormula>C$_2$OH$_5$$^-</OrdinaryStructuralFormula>
같은 것입니다. 첨자 패턴은 일반적인 경우 여러 번 일치 할 수 있으며 문자열의 중간이나 끝에있을 수 있습니다. 이 패턴은 또한 두 번째 예제의 끝에 $^- bit라는 충전 표기법과 일치해야합니다.
XSLT 프로세서는 Saxon 9.4이고 XSLT 템플릿은 다음과 같습니다.
<xsl:template name="formula">
<xsl:param name="formula"/>
<xsl:if test="$formula">
<xsl:variable name="f" select="translate($formula, '$', '')"/>
<xsl:analyze-string select="$f" regex="(_)(\d+)|(\^)\d*\+|(\^)\d*\-">
<xsl:matching-substring>
<xsl:if test="regex-group(1)='_'">
<sub><xsl:value-of select="regex-group(2)"/></sub>
</xsl:if>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:if>
</xsl:template>
입력 XML, XSLT 코드, 원하는 결과물, 현재 출력물을 완벽하고 최소이지만 잘 작성한 샘플을 게시하여 문제를 설명하고이를 재현 할 수 있도록하십시오. 혐의 된 입력이' H $ _2 $ O OrdinaryStructuralFormula>'인데, 시작 태그 이름이 끝 태그 이름과 다른 경우, 당신이 얻는 공백의 원인이 무엇인지 알 수 없으며, 당신이 게시 한 XSLT 스 니펫에는 아무것도 설명되어 있지 않습니다. –