원하는대로 자동으로 수행 할 수는 없지만 그것은 이런 식으로 뭔가를 갈 것 :
<xsl:apply-templates select="td:Benutzer_zu_POI[
td:PID = '400639' or
td:PID = '400929' or
td:PID = '401184' or
td:PID = '401006' or
td:PID = '430003408' or
td:PID = '401519' or
td:PID = '400660' or
td:PID = '500287' or
td:PID = '200461' or
td:PID = '400756']">
<xsl:sort select="string-length(
substring-before(
'|400639|400929|401184|401006|...|400756|',
concat('|', td:PID, '|')))"
data-type="number" />
</xsl:apply-templates>
이 어떻게 작동하는지 설명하기 위해 의도는 항목의 순서에 따라 선택의 결과로 작은 숫자를 생산하는 것입니다. 그래서 예를 들어, 400639, 이것은 평가 : 401,184에 대한
string-length(
substring-before(
'|400639|400929|401184|401006|...|400756|',
'|400639|'))
string-length('')
0
, 그렇게에
string-length(
substring-before(
'|400639|400929|401184|401006|...|400756|',
'|401184|'))
string-length('|400639|400929')
14
하고있어.
concat()의 목적은 부분 일치를 방지하기 위해 파이프 기호의 값을 구분하는 것입니다.
(assume td:PID = 456)
string-length(
substring-before(
'|123456|234567|34567|456|',
'456'))
string-length(
'|123')
4
실제로 그 이후에해야 할 때 456이 23456 및 34567 앞에 배치 될 수 있다는 것을 의미 : 우리는 CONCAT()를 사용하지 않은 경우, 당신은이 같은 상황이있을 수 있습니다. 이 구분에 둘러싸여 때이 발생하지 않습니다
string-length(
substring-before(
'|123456|234567|34567|456|',
'|456|'))
string-length(
'|123456|234567|34567')
20
좋습니다. 잘 작동합니다! 고맙습니다. 정확히 concat 부분 않습니다 ... ?? –
위 설명을 추가했습니다. 아직 명확하지 않은 경우 알려 주시기 바랍니다. – JLRishe
알았어요. 설명 주셔서 감사합니다! –