[svg-developers] Re: StyleSheet to Add missing Elements ID's

2011-01-07 Thread t...@ymail.com
I realized that this doesn't really solve the problem of potential duplicate 
IDs.  If your XSLT processor creates IDs that will never ever have trailing 
underscores (that's pretty likely, I think), then you're on the safe side with 
either the first or the second version of the stylesheet.


--- In svg-developers@yahoogroups.com, t...@... t...@... wrote:

 Problem: It's pretty unlikely, but the stylesheet I sent could possibly 
 generate non-unique IDs because it doesn't check whether generate-id() 
 returns an ID that has already been created by appending underscores to an ID 
 that generate-id() returned for another node.  This version should fix it 
 (sorry about the missing indentation, the Yahoo Groups web interface mangles 
 it):
 
 
 ?xml version=1.0 ?
 stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
   key name=id match=*...@id] use=@id/
 
   template name=generateUniqueId
 param name=id select=generate-id()/
 param name=alreadyAddedIds/
 choose
   !-- Test whether $id is already taken by another item --
   when test=key('id',$id) or contains($alreadyAddedIds, concat(' 
 ',$id,' ')) 
 call-template name=generateUniqueId
   !-- Append something to the id until it's unique --
   with-param name=id select=concat($id,'_')/
   with-param name=alreadyAddedIds select=$alreadyAddedIds/
 /call-template
   /when
   otherwise
 value-of select=$id/
   /otherwise
 /choose
   /template
 
   template match=*
 param name=alreadyAddedIds select=' '/
 !-- Copy element and all attributes --
 copy
   for-each select=@*
 copy/
   /for-each
   choose
 !-- If id attribute is missing, generate one (only for svg elements) 
 --
 when test=not(@id) and 
 namespace-uri()='http://www.w3.org/2000/svg'
   variable name=id
 call-template name=generateUniqueId
   with-param name=alreadyAddedIds select=$alreadyAddedIds/
 /call-template
   /variable
   attribute name=id
 value-of select=$id/
   /attribute
   apply-templates
 with-param name=alreadyAddedIds 
 select=concat($alreadyAddedIds,$id,' ')/
   /apply-templates
 /when
 otherwise
   apply-templates
 with-param name=alreadyAddedIds select=$alreadyAddedIds/
   /apply-templates
 /otherwise
   /choose
 /copy
   /template
 
 /stylesheet
 
 
 
 --- In svg-developers@yahoogroups.com, th_w@ th_w@ wrote:
 
  Does this do the job for you?
  
  ?xml version=1.0 ?
  stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
key name=id match=*...@id] use=@id/
  
template name=generateUniqueId
  param name=id select=generate-id()/
  choose
!-- Test whether $id is already taken by another item --
when test=key('id',$id) 
  call-template name=generateUniqueId
!-- Append something to the id until it's unique --
with-param name=id select=concat($id,'_')/
  /call-template
/when
otherwise
  value-of select=$id/
/otherwise
  /choose
/template
  
template match=*
  !-- Copy element and all attributes --
  copy
for-each select=@*
  copy/
/for-each
!-- If id attribute is missing, generate one (only for svg elements) 
  --
if test=not(@id) and namespace-uri()='http://www.w3.org/2000/svg'
  attribute name=id
call-template name=generateUniqueId/
  /attribute
/if
  /copy
  apply-templates/
/template
  
  /stylesheet
  
  
  Thomas W.
  
  
  --- In svg-developers@yahoogroups.com, fisad@ fisad@ wrote:
  
   Is There any stylesheet to add missing id to elements in svg files.
   
   I have some svg files without id for some elements like path's and rect's 
   and I want to add the missing id's to this elements with the use of a 
   stylesheet.
   
   That is possible?.
   
   I can make that with a xml rutine in Delphi but that is to much long.
   
   Any idea?
   
   Thanks.
   
   Fisad.
  
 







-
To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com
-or-
visit http://groups.yahoo.com/group/svg-developers and click edit my 
membership
Yahoo! Groups Links

* To visit your group on the web, go to:
http://groups.yahoo.com/group/svg-developers/

* Your email settings:
Individual Email | Traditional

* To change settings online go to:
http://groups.yahoo.com/group/svg-developers/join
(Yahoo! ID required)

* To change settings via email:
svg-developers-dig...@yahoogroups.com 
svg-developers-fullfeatu...@yahoogroups.com

* To unsubscribe from this group, send an email to:
svg-developers-unsubscr...@yahoogroups.com

* Your use of Yahoo! Groups is subject to:

[svg-developers] Re: StyleSheet to Add missing Elements ID's

2011-01-06 Thread fi...@rocketmail.com
Thanks so much, That was very usefull.

Fisad.

--- In svg-developers@yahoogroups.com, t...@... t...@... wrote:

 Problem: It's pretty unlikely, but the stylesheet I sent could possibly 
 generate non-unique IDs because it doesn't check whether generate-id() 
 returns an ID that has already been created by appending underscores to an ID 
 that generate-id() returned for another node.  This version should fix it 
 (sorry about the missing indentation, the Yahoo Groups web interface mangles 
 it):
 
 
 ?xml version=1.0 ?
 stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
   key name=id match=*...@id] use=@id/
 
   template name=generateUniqueId
 param name=id select=generate-id()/
 param name=alreadyAddedIds/
 choose
   !-- Test whether $id is already taken by another item --
   when test=key('id',$id) or contains($alreadyAddedIds, concat(' 
 ',$id,' ')) 
 call-template name=generateUniqueId
   !-- Append something to the id until it's unique --
   with-param name=id select=concat($id,'_')/
   with-param name=alreadyAddedIds select=$alreadyAddedIds/
 /call-template
   /when
   otherwise
 value-of select=$id/
   /otherwise
 /choose
   /template
 
   template match=*
 param name=alreadyAddedIds select=' '/
 !-- Copy element and all attributes --
 copy
   for-each select=@*
 copy/
   /for-each
   choose
 !-- If id attribute is missing, generate one (only for svg elements) 
 --
 when test=not(@id) and 
 namespace-uri()='http://www.w3.org/2000/svg'
   variable name=id
 call-template name=generateUniqueId
   with-param name=alreadyAddedIds select=$alreadyAddedIds/
 /call-template
   /variable
   attribute name=id
 value-of select=$id/
   /attribute
   apply-templates
 with-param name=alreadyAddedIds 
 select=concat($alreadyAddedIds,$id,' ')/
   /apply-templates
 /when
 otherwise
   apply-templates
 with-param name=alreadyAddedIds select=$alreadyAddedIds/
   /apply-templates
 /otherwise
   /choose
 /copy
   /template
 
 /stylesheet
 
 
 
 --- In svg-developers@yahoogroups.com, th_w@ th_w@ wrote:
 
  Does this do the job for you?
  
  ?xml version=1.0 ?
  stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
key name=id match=*...@id] use=@id/
  
template name=generateUniqueId
  param name=id select=generate-id()/
  choose
!-- Test whether $id is already taken by another item --
when test=key('id',$id) 
  call-template name=generateUniqueId
!-- Append something to the id until it's unique --
with-param name=id select=concat($id,'_')/
  /call-template
/when
otherwise
  value-of select=$id/
/otherwise
  /choose
/template
  
template match=*
  !-- Copy element and all attributes --
  copy
for-each select=@*
  copy/
/for-each
!-- If id attribute is missing, generate one (only for svg elements) 
  --
if test=not(@id) and namespace-uri()='http://www.w3.org/2000/svg'
  attribute name=id
call-template name=generateUniqueId/
  /attribute
/if
  /copy
  apply-templates/
/template
  
  /stylesheet
  
  
  Thomas W.
  
  
  --- In svg-developers@yahoogroups.com, fisad@ fisad@ wrote:
  
   Is There any stylesheet to add missing id to elements in svg files.
   
   I have some svg files without id for some elements like path's and rect's 
   and I want to add the missing id's to this elements with the use of a 
   stylesheet.
   
   That is possible?.
   
   I can make that with a xml rutine in Delphi but that is to much long.
   
   Any idea?
   
   Thanks.
   
   Fisad.
  
 







-
To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com
-or-
visit http://groups.yahoo.com/group/svg-developers and click edit my 
membership
Yahoo! Groups Links

* To visit your group on the web, go to:
http://groups.yahoo.com/group/svg-developers/

* Your email settings:
Individual Email | Traditional

* To change settings online go to:
http://groups.yahoo.com/group/svg-developers/join
(Yahoo! ID required)

* To change settings via email:
svg-developers-dig...@yahoogroups.com 
svg-developers-fullfeatu...@yahoogroups.com

* To unsubscribe from this group, send an email to:
svg-developers-unsubscr...@yahoogroups.com

* Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/



[svg-developers] Re: StyleSheet to Add missing Elements ID's

2011-01-05 Thread t...@ymail.com
Does this do the job for you?

?xml version=1.0 ?
stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
  key name=id match=*...@id] use=@id/

  template name=generateUniqueId
param name=id select=generate-id()/
choose
  !-- Test whether $id is already taken by another item --
  when test=key('id',$id) 
call-template name=generateUniqueId
  !-- Append something to the id until it's unique --
  with-param name=id select=concat($id,'_')/
/call-template
  /when
  otherwise
value-of select=$id/
  /otherwise
/choose
  /template

  template match=*
!-- Copy element and all attributes --
copy
  for-each select=@*
copy/
  /for-each
  !-- If id attribute is missing, generate one (only for svg elements) --
  if test=not(@id) and namespace-uri()='http://www.w3.org/2000/svg'
attribute name=id
  call-template name=generateUniqueId/
/attribute
  /if
/copy
apply-templates/
  /template

/stylesheet


Thomas W.


--- In svg-developers@yahoogroups.com, fi...@... fi...@... wrote:

 Is There any stylesheet to add missing id to elements in svg files.
 
 I have some svg files without id for some elements like path's and rect's and 
 I want to add the missing id's to this elements with the use of a stylesheet.
 
 That is possible?.
 
 I can make that with a xml rutine in Delphi but that is to much long.
 
 Any idea?
 
 Thanks.
 
 Fisad.







-
To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com
-or-
visit http://groups.yahoo.com/group/svg-developers and click edit my 
membership
Yahoo! Groups Links

* To visit your group on the web, go to:
http://groups.yahoo.com/group/svg-developers/

* Your email settings:
Individual Email | Traditional

* To change settings online go to:
http://groups.yahoo.com/group/svg-developers/join
(Yahoo! ID required)

* To change settings via email:
svg-developers-dig...@yahoogroups.com 
svg-developers-fullfeatu...@yahoogroups.com

* To unsubscribe from this group, send an email to:
svg-developers-unsubscr...@yahoogroups.com

* Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/



[svg-developers] Re: StyleSheet to Add missing Elements ID's

2011-01-05 Thread t...@ymail.com
Problem: It's pretty unlikely, but the stylesheet I sent could possibly 
generate non-unique IDs because it doesn't check whether generate-id() returns 
an ID that has already been created by appending underscores to an ID that 
generate-id() returned for another node.  This version should fix it (sorry 
about the missing indentation, the Yahoo Groups web interface mangles it):


?xml version=1.0 ?
stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
  key name=id match=*...@id] use=@id/

  template name=generateUniqueId
param name=id select=generate-id()/
param name=alreadyAddedIds/
choose
  !-- Test whether $id is already taken by another item --
  when test=key('id',$id) or contains($alreadyAddedIds, concat(' ',$id,' 
')) 
call-template name=generateUniqueId
  !-- Append something to the id until it's unique --
  with-param name=id select=concat($id,'_')/
  with-param name=alreadyAddedIds select=$alreadyAddedIds/
/call-template
  /when
  otherwise
value-of select=$id/
  /otherwise
/choose
  /template

  template match=*
param name=alreadyAddedIds select=' '/
!-- Copy element and all attributes --
copy
  for-each select=@*
copy/
  /for-each
  choose
!-- If id attribute is missing, generate one (only for svg elements) 
--
when test=not(@id) and namespace-uri()='http://www.w3.org/2000/svg'
  variable name=id
call-template name=generateUniqueId
  with-param name=alreadyAddedIds select=$alreadyAddedIds/
/call-template
  /variable
  attribute name=id
value-of select=$id/
  /attribute
  apply-templates
with-param name=alreadyAddedIds 
select=concat($alreadyAddedIds,$id,' ')/
  /apply-templates
/when
otherwise
  apply-templates
with-param name=alreadyAddedIds select=$alreadyAddedIds/
  /apply-templates
/otherwise
  /choose
/copy
  /template

/stylesheet



--- In svg-developers@yahoogroups.com, t...@... t...@... wrote:

 Does this do the job for you?
 
 ?xml version=1.0 ?
 stylesheet version=1.0 xmlns=http://www.w3.org/1999/XSL/Transform;
   key name=id match=*...@id] use=@id/
 
   template name=generateUniqueId
 param name=id select=generate-id()/
 choose
   !-- Test whether $id is already taken by another item --
   when test=key('id',$id) 
 call-template name=generateUniqueId
   !-- Append something to the id until it's unique --
   with-param name=id select=concat($id,'_')/
 /call-template
   /when
   otherwise
 value-of select=$id/
   /otherwise
 /choose
   /template
 
   template match=*
 !-- Copy element and all attributes --
 copy
   for-each select=@*
 copy/
   /for-each
   !-- If id attribute is missing, generate one (only for svg elements) 
 --
   if test=not(@id) and namespace-uri()='http://www.w3.org/2000/svg'
 attribute name=id
   call-template name=generateUniqueId/
 /attribute
   /if
 /copy
 apply-templates/
   /template
 
 /stylesheet
 
 
 Thomas W.
 
 
 --- In svg-developers@yahoogroups.com, fisad@ fisad@ wrote:
 
  Is There any stylesheet to add missing id to elements in svg files.
  
  I have some svg files without id for some elements like path's and rect's 
  and I want to add the missing id's to this elements with the use of a 
  stylesheet.
  
  That is possible?.
  
  I can make that with a xml rutine in Delphi but that is to much long.
  
  Any idea?
  
  Thanks.
  
  Fisad.
 







-
To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com
-or-
visit http://groups.yahoo.com/group/svg-developers and click edit my 
membership
Yahoo! Groups Links

* To visit your group on the web, go to:
http://groups.yahoo.com/group/svg-developers/

* Your email settings:
Individual Email | Traditional

* To change settings online go to:
http://groups.yahoo.com/group/svg-developers/join
(Yahoo! ID required)

* To change settings via email:
svg-developers-dig...@yahoogroups.com 
svg-developers-fullfeatu...@yahoogroups.com

* To unsubscribe from this group, send an email to:
svg-developers-unsubscr...@yahoogroups.com

* Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/