이것은 매우 간단한 질문 일 수 있지만 그 중 하나는 얻을 수없는 것 같아서 머리카락을 찢어 버리고 있습니다. 나는 다음과 같은 XML이 :XSL 및 네임 스페이스
<?xml-stylesheet type="text/xsl" href="email.xsl"?>
<Example xmlns="">
<Name xmlns="urn:rnb.fulfilment.bus.contracts.public.exampleBookName.v1">Mark</Name>
</Example>
을 그리고 다음 XSLT 사용하는 것을 시도하고있다 : 나는 제거 할 때
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="/">
<html>
<body>
<table width="90%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>AUTOMATED CONFIRMATION: This confirmation email is unable to take replies. For further assistance please visit our Help pages or Contact us</p>
<p>Dear <xsl:value-of select="Name"/>,</p>
<p>Thank you for blah blah... </p>
</td>
</tr>
</table>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
내가, 내가 XML 피드에서 xmlns=urn:rnb.fulfilment.bus.contracts.public.exampleBookName.v1
을 사용하고 때 표시 할 이름을 얻을 수 있습니다 xmlns
, 이름이 잘 표시됩니다.
일부 구문이 있습니까?
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rpg="urn:rnb.fulfilment.bus.contracts.public.exampleBookName.v1"
>
가 그럼 난 XPath 식의 XSLT에게 준 접두사를 사용하여 :
<xsl:value-of select="Name"/>
을하지만이 중 하나가 작동하지 않습니다 나는 <xsl:stylesheet>
요소에 네임 스페이스를 추가하는 시도했습니다. 누구든지 도와 줄 수 있습니까? 미리 감사드립니다.
이것은 비효율적 일뿐만 아니라 (문자열 비교로 인해 느려서) 실제로 네임 스페이스를 고려하지 않기 때문에 좋지 않은 아이디어입니다. – Lucero
... 네임 스페이스가 관련된 경우 (다른 네임 스페이스에 대해 다른 동작이 필요한 경우). XSL이 관심이있는 원시 XML의 내용을 포맷하는 경우 네임 스페이스는 그다지 관련이 없으며 무시할 수 있습니다. OP 예제에서 네임 스페이스는 출력 XML에 보존되지 않도록 * 요소의 텍스트 내용 만 유지됩니다. 성능 문제가 확실하지 않습니다. XPath 함수 정의에 따라 "* [name() = name]"은 "name"과 동일 함을 기억하십시오. 어쨌든 컴파일러는 XPath 표현식을 최적화 할 목적으로 XPath 표현식을 '다시 작성'할 수 있습니다. – user268396
+1 부정적인 점수를받을만한 나쁜 대답이나 잘못된 대답은 아닙니다. 그것에는 몇 가지 함의가 있지만 이름이 지어졌습니다. 성능 인수는 현재 노드에있는 자식 수와 XSLT 프로세서가 얼마나 잘 최적화되어 있는지에 따라 크게 달라집니다.네임 스페이스 인수는 당신이 신경 써야하는지 아닌지에 달려 있습니다. ;) – Tomalak