최저XSL v1을 등록 표현은 - 텍스트의 패턴을 찾아 - IBM 왓슨 탐색기 WEX를
내가 그 발생하면 (텍스트 다시 다음 문자열을 검색 할 수있는 XSL 스크립트를 [구축하기 위해 노력하고있어 텍스트)] :
나는 기본적으로 3.2.14P5879 또는 따라서 14.1.1Z5526
입니다 필요로하는 패턴 :
자리 자리 도트 자리 도트 자리 레터 P_or_Z 나는 텍스트를 한 경우, 예를 들어는 : 14.1.1Z5526을 문서화에 대한 프로젝트 3.2.14P5879에 문제가 있었다
은 우리가를 사용했습니다 있다고 -ABC.docx 의 문서 "14.1.1P5526 - xyz.pdf"그럼나는 다음의 결과가 수 있다면 놀라운 것 :
- <content name="test">3.2.14P5879</content>
- <content name="test">14.1.1Z5526</content>
- <content name="test">14.1.1P5526</content>
012,317을 내가 지금까지 해왔고 작동하지 않는 것은 일부 위치가 어휘와 일치하는지 확인하는 것입니다. (코드 작동) 그러나 결과는 잘못되었습니다. 텍스트 시작 부분의 진술 만 검사합니다.
<xsl:variable name="vUpper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:variable name="vLower" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="vAlpha" select="concat($vUpper, $vLower)" />
<xsl:variable name="vDigits" select="''" />
<xsl:variable name="vDot" select="'.'" />
<xsl:variable name="vProject" select="'PZ'" />
<xsl:template match="/">
<document>
<xsl:for-each select="//*[text()]">
<content name="Lengte" length="{string-length(.)}">
<xsl:value-of select="." />
</content>
<xsl:choose>
<xsl:when
test="string-length(translate(substring(., 1, 2), $vDigits, '')) = 0 and string-length(translate(substring(., 3, 1), $vDot, '')) = 0 and string-length(translate(substring(., 5, 1), $vDot, '')) = 0 and string-length(translate(substring(., 6, 2), $vDigits, '')) = 0 and string-length(translate(substring(., 8, 1), $vProject, '')) = 0 and string-length(translate(substring(., 9, 4), $vDigits, '')) = 0"
>
<content name="A" Proj-name="{.}" Proj="{substring(., 1, 11)}">
<xsl:value-of select="substring(., 1, 2)" />
</content>
<content name="B" Proj-name="{.}" Proj="{substring(., 1, 11)}">
<xsl:value-of select="substring(., 4, 1)" />
</content>
<content name="C" Proj-name="{.}" Proj="{substring(., 1, 11)}">
<xsl:value-of select="substring(., 6, 2)" />
</content>
<content name="D" Proj-name="{.}" Proj="{substring(., 1, 11)}">
<xsl:value-of select="substring(., 9, 4)" />
</content>
<content name="E" Proj-name="{.}" Proj="{substring(., 1, 11)}">
<xsl:value-of select="substring(., 1, 7)" />
</content>
<content name="F" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="." />
</content>
</xsl:when>
<xsl:when
test="string-length(translate(substring(., 1, 1), $vDigits, '')) = 0 and string-length(translate(substring(., 2, 1), $vDot, '')) = 0 and string-length(translate(substring(., 4, 1), $vDot, '')) = 0 and string-length(translate(substring(., 5, 2), $vDigits, '')) = 0 and string-length(translate(substring(., 7, 1), $vProject, '')) = 0 and string-length(translate(substring(., 8, 4), $vDigits, '')) = 0"
>
<content name="A" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="substring(., 1, 1)" />
</content>
<content name="B" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="substring(., 3, 1)" />
</content>
<content name="C" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="substring(., 5, 2)" />
</content>
<content name="D" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="substring(., 2, 4)" />
</content>
<content name="E" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="substring(., 1, 7)" />
</content>
<content name="F" Proj-name="{.}" Proj="{substring(., 1, 10)}">
<xsl:value-of select="." />
</content>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</document>
</xsl:template>
왜이 기능이 필요한가요? 그리고 왜 XSL 버전 1.0 ??? 현재 Watson Explorer 11.0.2를 사용 중이며 html-xsl 액션 (사용자 지정 변환기)을 통해 액세스 할 수있는 사용자 지정 메타 데이터를 검색했습니다 (Regex-regex-text perl-regex perl-regex-text도 사용할 수 있지만 사용 방법에 대한 단서가 하나도 없습니다. (완벽한 문서를 작성해 주셔서 감사합니다.)
따라서 짧게 유지하기 위해 왓슨 탐색기에서 정규식을 통해 "코드"를 검색 - 사용자 정의 변환기 - 액션를 (필자는 등록 표현을 알고) -
내가 XSL 버전을 통해 다시 텍스트에서 코드를 검색하기 위해 도움이 있어야 1.0
(PS, Watson 탐색기는 엔터프라이즈 검색, 웹 스크래퍼/크롤러입니다.)
AFAIK는 왓슨 탐색기 확장 기능 포함의 다양한 지원합니다. 정규식. 나는'viv : match()'함수가 당신이 원하는 함수라고 믿지만, 나는 Watson 사용자가 아니기 때문에 이것을 테스트 할 수 없다. pure XSLT 1.0에서 정규 표현식 지원없이이 작업을 수행하는 것은 매우 어려울 것입니다. 각 자릿수에 얼마나 많은 자릿수가 있는지 알 수 있습니까? –
@ michael.hor257k - 길이가 가변적 인 이유는 일부 숫자가 프로젝트 ID를 나타 내기 때문입니다. 따라서 그것은 다를 수 있습니다. 정규 표현식의 주된 문제는 시작하는 방법을 모르는 것입니다. html-xsl을 사용할 때, ** ** 후에 ** 일부 요소를 정의 할 수 있음을 알았습니다. 하지만 Regex에는 해당 작업 기능에 대한 적절한 문서가 하나도 없습니다. 또한 예제가 없습니다. (나는 오히려 정규식을 사용하는 것을 좋아할 것이지만 ... 당신이 그것을 어떻게 사용할 수 있는지 알고 싶습니다.) –
Dieter
http://exslt.org/regexp/functions/match/index와 똑같이 동작합니다. htaccess Admin Home English Language Content –