2014-11-11 2 views
0

XSLT에서 곱슬 따옴표를 구현하려고합니다. 그러나 일부 경우에는 실패합니다. 다음과 같은 입력을 고려해XSLT에서 곱슬 따옴표를 구현합니다.

<p>"This is a "sample quote text" that needs to be checked"</p> 

지금, 내가 변환 할 바로 따옴표를 곱슬을 인용한다. 내가 온라인으로 본 모든 구현은 직선 따옴표를 바꿔 열고 닫는 곱슬 따옴표를 대체합니다. 그러나 이것은 다음과 같은 특수한 경우에 실패합니다. 필요한 출력은 다음과 같습니다.

<p>“This is a “sample quote text” that needs to be checked”</p> 

인용 부호 앞에 공백이 있는지 확인하십시오. 공백이있는 경우 인용문을 열고 다른 인용문을 닫습니다. 예외는 행의 처음과 끝에있는 따옴표입니다. 따옴표가 붙었을 때 이전 문자를 확인하는 방법을 잘 모르겠으며 동시에 시작과 끝 인용문을 처리합니다.

도움을 주시면 감사하겠습니다. 고맙습니다.

+0

XSLT 1.0 또는 2.0을 사용하고 있습니까? - 인용 문구가 항상 공백 (또는 공백 만)으로 둘러싸여 있지 않을 수도 있습니다 - 예 : "일부 인용문 "? *. –

+0

XSLT 2.0을 사용하고 있습니다. 예를 들어 공유 한 경우 동일한 규칙이 적용되지 않습니까? 즉"일부 견적 "이라고 말한 사람이 W로 바뀔 것입니다. 호가 "견적"이라고 했어? 초기 게시물에서 시작 부분과 끝 부분의 따옴표는 따옴표를 각각 열고 닫을 것이라고 언급했기 때문에. 그냥 구현하는 방법을 모르겠다. –

+1

음, replace() 함수를 사용하여 space + quotote를 space + opening_quote로 바꾸고 quote + space를 closing_quote + space로 바꿀 수 있습니다. 더 똑똑한 해결책은 정규식을 사용하여 찾을 수 있습니다. - 두 번째 따옴표 다음에 공백이 없으며 문자열의 마지막 문자가 아니기 때문에 동일한 규칙이 내 예제에는 적용되지 않습니다. –

답변

0

XSLT를 사용하여 HTML을 렌더링한다는 것을 깨달을 때까지 한 번 비슷한 문제가 발생했습니다. CSS를 사용할 수 있기 때문에 마침내 아래 해결책을 찾았습니다 (출처 : http://css-tricks.com/almanac/properties/q/quotes/).

첫째, 나는 CSS 규칙을 정의 : 당신이 볼 수 있듯이

q { 
    quotes: "“" "”" "“" "”"; 
} 
q:before { 
    content: open-quote; 
} 
q:after { 
    content: close-quote; 
} 

, q 요소에 적용되는 CSS 규칙의 quotes 속성은 이미 인용 된 텍스트의 내부 따옴표 같은 기호를 사용할 것을 알려줍니다 . 예상대로

마지막 단락은 다음과 렌더링 다시 말하지만, 나는 '..;

둘째, 나는 (나의이었다 당신의 경우에 쉽게 할 수 있는지 모르겠다) "를 사용하는 대신 <q>을 사용 당신이 HTML을 렌더링한다고 가정 할 때 :

<p><q>This is a <q>sample quote text</q> that needs to be checked</q></p> 
+0

입력 및 출력 파일은 모두 XML 형식이다. 나는 CSS가 여기에서 도움이 될 수 있다고 생각하지 않는다. 순수하게 XSLT에 해결책이 있습니까? –

관련 문제